web-dev-qa-db-ja.com

Androidシンプルなスピナーアイテム

この質問はこれに関連しています: Android.R.simple_spinner_item

評判が低いためコメントできないので、もう1つ質問があります。

Android.R.simple_spinner_itemレイアウトをコピーして貼り付けると、エラーが発生します

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

「エラー:エラー:属性はパブリックではありません。(値 '?android:attr/dropdownListPreferredItemHeight'の 'layout_height'にあります。」)

追加したばかりですAndroid:gravity="right"をクリックして、spinner_itemを右側に配置します。

このエラーを解決するにはどうすればよいですか?

19
Zuop

次のように、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"/>
36
Daniel Wilson

次に、それを設計する必要があります。

layout/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);

    }
4
Jossy Paul

このリソースはプライベートの場合、その属性のライブラリのみが使用できます。したがって、この属性のサイズを取得し、アプリ内で作成する必要があります。ソースコードから: 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"

2
Anthony Cannon
Android:layout_width="match_parent"
Android:layout_height="48dp"

これらの属性を使用してカスタムレイアウトを作成します。後でそれをテーマにしたいと思うかもしれません。

1
Omkar Amberkar

システムでパブリックとして定義されているAndroidリソース(テーマまたは属性))のみを使用できます。

Attr "?android:attr/dropdownListPreferredItemHeight"は公開されていないため、使用できません。

代わりに、あなたは使うことができます

Android:layout_height="wrap_content"

スピナーアイテムのレイアウト用。

別の回避策は、SDKからプロジェクトにリソースをコピーして、プロジェクトで使用することです。

1
MysticMagicϡ