这个问题涉及到这个问题: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_item对齐到右侧。
如何解决此错误?
答案 0 :(得分:34)
如果你不用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"/>
答案 1 :(得分:4)
然后你必须设计它。
布局/ 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);
}
答案 2 :(得分:2)
此资源如果是私有的,那么只有该属性所来自的库才能使用它。因此,您需要获取此属性的大小并在您的应用中创建它。来自源代码: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"
答案 3 :(得分:1)
您只能使用由系统定义为公共的安卓资源(主题或属性)。
由于attr "?android:attr/dropdownListPreferredItemHeight"
不公开,所以你不能使用它。
相反,您可以使用
android:layout_height="wrap_content"
用于Spinner项目布局。
另一种解决方法可能是将资源从SDK复制到项目中,然后在项目中使用它们。
答案 4 :(得分:1)
android:layout_width="match_parent"
android:layout_height="48dp"
使用这些属性创建自定义布局。您可能希望稍后对其进行主题化。