ドロップダウンリストから選択するときにスピナーの中心のテキストを表示
スピナーのビューテキストを中央に揃えたい。私はそれをグーグルで検索しましたが、何も見つかりませんでした。誰もこれについて知っていますか?どんな助けや提案も大歓迎です
このようにスピナー用のアダプターを作成し、
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.my_spinner_style,array_of_values) {
public View getView(int position, View convertView,ViewGroup parent) {
View v = super.getView(position, convertView, parent);
((TextView) v).setTextSize(16);
return v;
}
public View getDropDownView(int position, View convertView,ViewGroup parent) {
View v = super.getDropDownView(position, convertView,parent);
((TextView) v).setGravity(Gravity.CENTER);
return v;
}
};
レイアウトR.layout.my_spinner_style、
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+Android:id/text1"
style="?android:attr/spinnerItemStyle"
Android:singleLine="true"
Android:textColor="#ffffff"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:ellipsize="Marquee" />
次に、このアダプターをスピナーに設定し、
spinner.setAdapter(adapter);
スピナーアイテムに独自のレイアウトを設定する必要があります。
SpinnerAdapter adap = new ArrayAdapter<String>(this, R.layout.spinner_item, new String[]{"A", "B", "C"});
spriner.setAdapter(adap);
R.layout.spinner_itemはコンテンツを含むレイアウトです:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_height="fill_parent"
Android:layout_width="fill_parent"
Android:gravity="center"
Android:textColor="#000000"
Android:text="Sample Text"
Android:paddingBottom="5dp"
Android:paddingTop="5dp"></TextView>
これは非常に簡単です。spinner_item.xml
という名前のxml
ファイルを作成し、コンテンツを
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textColor="#111111"
Android:padding="10dp"
Android:textAlignment="center"
/>
Java
クラスに、Androidのデフォルトビューリソースを追加するにもかかわらず、カスタムビューリソースを
ArrayAdapter<String> adapter= new ArrayAdapter<String>(context, R.layout.spinner_item, myList);
adapter.setDropDownViewResource(R.layout.spinner_item);
TextAlignment行がトリックを行います。
textAlignment to centerと設定すると、テキストが中央に配置されます。
Android:textAlignment = "center"
<Android.support.v7.widget.AppCompatSpinner
Android:id="@+id/spinner_areas"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_centerInParent="true"
Android:visibility="visible"
Android:gravity="center"
Android:textAlignment="center"/>
これは、レイアウトを変更せずに機能します
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
((TextView) adapterView.getChildAt(0)).setGravity(Gravity.CENTER);
}
});
ゲームが遅いのですが、私の問題の簡単な解決策を見つけたからといって、将来のユーザーのためにこれを追加したかったのです。カスタムレイアウトを作成せずにシンプルなテキストを中央に配置することができました。私がこれをした方法は、padding
を使用していた
<Spinner
Android:id="@+id/example_spinner"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:paddingLeft="10dp"
Android:paddingRight="10dp"
Android:paddingTop="2dp"
Android:paddingBottom="2dp" />
この方法を使用して、スピナー内でテキストを中央に配置することに成功しました。これは単純な場合にのみ機能する可能性がありますが、とにかく、より複雑な場合にはカスタムレイアウトを使用する必要があります。これは、XMLファイルを小さくし、単純なスピナーを中央に配置するためだけにカスタムレイアウトを使用する必要がないようにするためです。
この行をスピナーに追加します
Android:textAlignment="center"
出来上がり!