ドロップダウン矢印を発光テキスト要素の近くでSpinner
に設定する必要があります。どのようにこれを達成することができる?Android Spinnerのドロップダウン矢印を発光テキストの近くに移動するには
<Spinner android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
ドロップダウン矢印を発光テキスト要素の近くでSpinner
に設定する必要があります。どのようにこれを達成することができる?Android Spinnerのドロップダウン矢印を発光テキストの近くに移動するには
<Spinner android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
あなたはXMLでカスタムの背景を定義した後、右サイドから矢印のマージンを設定することによって、この問題を解決することができます。
まず、矢印の矩形の背景とビットマップオブジェクトでレイヤーリストを定義します。矢印を重心を設定することで右側の中心に合わせることができ、アンドロイド:右の属性で右マージンを設定することで、矢印を中心に移動させることができます。これは、テキストの長さに基づいて矢印を動的に移動することはありませんが、最初のステップとして役立つはずです。
spinner_background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/color_white" />
<corners android:radius="2.5dp" />
</shape>
</item>
<item android:right="64dp">
<bitmap
android:gravity="right|center_vertical"
android:src="@drawable/ic_spinner" />
</item>
</layer-list>
これは、選択されたスピナー項目custom_spinner_item.xmlのカスタムレイアウトを作成することによって達成することができます。現在選択されているスピナーアイテムを表示するTextViewを追加しました。矢印アイコンがImageViewに追加されます。任意のアイコンを使用できます。 TheoKanningの答えでは達成できないテキストの長さによって、矢印アイコンが動きます。実際には、このレイアウトでスピナーの外観を完全に変更することができます。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/spinner_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/ic_arrow_down"/>
</LinearLayout>
カスタムスピナーアダプターを作成し、上記のビューを膨張させます。また、デフォルトのgetView()メソッドをオーバーライドして、選択したスピナー項目のテキストをリストから設定します。
public class CustomSpinnerAdapter extends ArrayAdapter<String> {
LayoutInflater inflater;
List<String> spinnerItems;
public CustomSpinnerAdapter(Context applicationContext, int resource, List<String> spinnerItems) {
super(applicationContext, resource, spinnerItems);
this.spinnerItems = spinnerItems;
inflater = (LayoutInflater.from(applicationContext));
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflater.inflate(R.layout.custom_spinner_item, null);
TextView type = (TextView) view.findViewById(R.id.spinner_item_text);
type.setText(spinnerItems.get(i));
return view;
}
}
CustomSpinnerAdapterクラスをインスタンス化し、スピナーのアダプタとして設定します。 spinnerListは、スピナーに表示される項目のリストです。
CustomSpinnerAdapter customSpinnerAdapter = new CustomSpinnerAdapter(getContext(), android.R.layout.simple_spinner_item, spinnerList);
spinner.setAdapter(customSpinnerAdapter);
1) Set the background of spinner to @null
<Spinner
android:id="@+id/spinner"
android:background="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
2) In the spinner adapter layout, create an Imageview to the right of Textview or whatever content is in there
change the visibility of the imageview to "gone"
3)Override the onItemSelected method of the spinner in your activity,
in the onItemSelected method, call the Imageview
ImageView downArrow = (ImageView) view.findViewById(R.id.down_arrow);
change its visibility to "visible"
関心のある2つの側面が次のとおりです。1.Thereは閉じ括弧です(>)アンドロイドの後に行方不明:SRC = "@の描画可能/ ic_spinnerを"。 2. drawnerフォルダにspinner_background.xmlを作成する必要があります。 – XerXes