6

笑

テキストを垂直方向に中央揃えにするために、これらのスピナーが必要です。私はSpinnerxml定義でこのようなものを試しました:

<Spinner
    android:id="@+id/dir_spn"
    android:layout_gravity="center_vertical"
    android:gravity="center_vertical"
    android:layout_weight="1"/>

カスタムドロップダウンレイアウトを作成してみました:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="@style/SpinnerDropDownItem"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:ellipsize="marquee" />

styles.xml:

<resources>
<style name="SpinnerDropDownItem">
    <item name="android:gravity">center_vertical</item>
    <item name="android:layout_gravity">center_vertical</item>
    <item name="android:textColor">?android:attr/textColorPrimary</item>
    <item name="android:textColorHighlight">#FFFF9200</item>
    <item name="android:textColorHint">?android:attr/textColorHint</item>
    <item name="android:textColorLink">#5C5CFF</item>
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">normal</item>
</style>
</resources>

アダプターのドロップダウンセット:

adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

スピナーテキストを垂直方向の中央に配置するにはどうすればよいですか?

編集:アクティビティはマニフェストでこのようにテーマ化されていることに言及する価値があるかもしれません:

<resources>
<style name="SpeakNSpell" parent="@android:style/Theme">
    <item name="android:minHeight">68sp</item>
</style>
</resources>

これにより、すべてのビューが少なくとも68sp高くなります。これはスピナー内のテキストにも影響しますか?

4

3 に答える 3

8

リライト

以下に示すように、テキストをアイテムリソースの垂直方向の中央に配置したいようですが、コード例はドロップダウンメニューを対象としています...

レイアウトの比較

上部のスピナーはデフォルトのandroidsimple_spinner_itemレイアウトであり、下部は同じですがandroid:gravity="center_vertical"追加されています。

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:gravity="center_vertical"
    android:singleLine="true" />

あなたは私があなたのテーマを大きなもので使ったのを見ることができますminHeight。アダプタでこのレイアウトを使用する基本的な例を次に示します。

Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, list);
// set whatever dropdown resource you want
spinner.setAdapter(adapter);

写真を中心に「CASH」「SelectProduct」などが欲しいという前提で、他に何かしようとしているところがあれば教えてください!

于 2012-08-22T16:54:50.490 に答える
4

設定後も問題が解決しない場合は、 :gravityのパディングを設定してみてください。Spinner

                android:paddingTop="0dp"
                android:paddingBottom="0dp" 
于 2013-02-10T18:22:28.340 に答える
0

あなたのSpinnerAdapter試みではこのようなもの:

public View getDropDownView(int position, View convertView, ViewGroup parent) {
       View v = super.getDropDownView(position, convertView,parent);
       ((TextView) v).setGravity(Gravity.CENTER);
       return v;
}
于 2012-08-22T16:54:10.657 に答える