Android简单的微调项目

这个问题涉及到这个: android.R.simple_spinner_item

由于我不能评论,因为低信誉,我还有一个问题:

如果我复制并粘贴android.R.simple_spinner_item布局,我得到一个错误

android:layout_height="?android:attr/dropdownListPreferredItemHeight" 

说:“错误:错误:属性是不公开的(在'layout_height'值'android:attr / dropdownListPreferredItemHeight')。

我刚刚添加了android:gravity="right"来让spinner_itemalignment到右侧。

我怎样才能解决这个错误?

Solutions Collecting From Web of "Android简单的微调项目"

似乎为我工作,如果你不用android前缀,就像这样:

 <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="true" android:layout_width="match_parent" android:layout_height="?attr/dropdownListPreferredItemHeight" android:ellipsize="marquee"/> 

那么你将不得不devise它。

布局/ my_spinner_textview.xml

  <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" style="?android:attr/spinnerItemStyle" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:gravity="right" /> 

这是我如何设置适配器

  private String[] state= {"Andra Pradesh","Arunachal Pradesh","Assam","Bihar","Haryana","Himachal Pradesh", "Jammu and Kashmir", "Jharkhand","Karnataka", "Kerala","Tamil Nadu"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, R.layout.my_spinner_textview, state); adapter_state.setDropDownViewResource(R.layout.my_spinner_textview); Spinner spinner=(Spinner)findViewById(R.id.spinner1); spinner.setAdapter(adapter_state); } 

您只能使用由System定义为公共的android资源(主题或属性)。

astr "?android:attr/dropdownListPreferredItemHeight"是不公开的,你不能使用它。

相反,你可以使用

android:layout_height="wrap_content"

为微调项目布局。

另一个解决方法可能是将SDK中的资源复制到项目中,然后在项目中使用它们。

 android:layout_width="match_parent" android:layout_height="48dp" 

使用这些属性创build一个自定义布局。 您可能稍后想要主题。

这个资源如果是私有的,那么只有那个属性来自的库才能使用它。 所以你需要得到这个属性的大小,并在你的应用程序中创build它。 从源代码: https : //android.googlesource.com/platform/frameworks/support/+/50fe5ec/appcompat/res/values/themes.xml

我们可以在第50行和/或第84行看到那里的属性。 所以在你的dimens.xml文件中,你可以这样写:

<dimen name="dropdownListPreferredItemHeight">64dip</dimen>

然后引用它就像你会正常的资源:

android:layout_height="@dimen/dropdownListPreferredItemHeight"