この質問はこれに関連しています: 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を右側に配置します。
このエラーを解決するにはどうすればよいですか?
次のように、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"/>
次に、それを設計する必要があります。
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);
}
このリソースはプライベートの場合、その属性のライブラリのみが使用できます。したがって、この属性のサイズを取得し、アプリ内で作成する必要があります。ソースコードから: 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"
Android:layout_width="match_parent"
Android:layout_height="48dp"
これらの属性を使用してカスタムレイアウトを作成します。後でそれをテーマにしたいと思うかもしれません。
システムでパブリックとして定義されているAndroidリソース(テーマまたは属性))のみを使用できます。
Attr "?android:attr/dropdownListPreferredItemHeight"
は公開されていないため、使用できません。
代わりに、あなたは使うことができます
Android:layout_height="wrap_content"
スピナーアイテムのレイアウト用。
別の回避策は、SDKからプロジェクトにリソースをコピーして、プロジェクトで使用することです。