web-dev-qa-db-ja.com

androidでスピナーの中心にビューテキストの位置合わせを設定します

ドロップダウンリストから選択するときにスピナーの中心のテキストを表示

スピナーのビューテキストを中央に揃えたい。私はそれをグーグルで検索しましたが、何も見つかりませんでした。誰もこれについて知っていますか?どんな助けや提案も大歓迎です

35
Pratik

このようにスピナー用のアダプターを作成し、

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);
57
Andro Selva

スピナーアイテムに独自のレイアウトを設定する必要があります。

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>
38
ihrupin

これは非常に簡単です。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行がトリックを行います。

13
rajesh

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"/>
7
minhazur

これは、レイアウトを変更せずに機能します

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
               ((TextView) adapterView.getChildAt(0)).setGravity(Gravity.CENTER);
        }
 });
5
Borja

ゲームが遅いのですが、私の問題の簡単な解決策を見つけたからといって、将来のユーザーのためにこれを追加したかったのです。カスタムレイアウトを作成せずにシンプルなテキストを中央に配置することができました。私がこれをした方法は、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ファイルを小さくし、単純なスピナーを中央に配置するためだけにカスタムレイアウトを使用する必要がないようにするためです。

2
zgc7009

この行をスピナーに追加します

Android:textAlignment="center"

出来上がり!

1
Sanjit Prasad