Android简单的微调项目

时间:2014-09-26 09:52:19

标签: android android-layout android-spinner

这个问题涉及到这个问题: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对齐到右侧。

如何解决此错误?

5 个答案:

答案 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"
  

使用这些属性创建自定义布局。您可能希望稍后对其进行主题化。