【问题标题】:Style not appyling on Spinner?样式不适用于 Spinner?
【发布时间】:2026-01-21 08:30:02
【问题描述】:

在这个应用程序中,我想将 Spinner 的项目居中。我试过android:gravity="center",但它不起作用?我必须在微调器上添加小图像。我是怎么做到的。请指导我。

res/layoutspinner_layout.xml

       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"`
             android:layout_width="fill_parent"
             android:layout_height="match_parent">`
      <Spinner
               android:id="@+id/spinner1"
               android:layout_width="fill_parent"
           android:layout_height="55dp" 
               android:prompt="@string/spinner_promt"
              style="@style/spinnerStyleView"
        />
        </LinearLayout>

**style.xml**中的样式

        <style name="spinnerStyleView">
              <item name="android:background"> @drawable/notetvbg</item>
              <item name="android:textColor">@android:color/darker_gray</item>
           </style>`

【问题讨论】:

  • 不工作...我必须在微调器本身的中心制作微调器项目,并且还想在文本@Pragnani 之前添加小图像/图标
  • 对于上面答案中的textview,设置gravity =center来实现这个
  • 但我没有在这里使用textview,所以我如何实现这一点。 @普拉尼亚尼
  • 那就试试@Girishu 回答

标签: android android-layout android-spinner android-styles


【解决方案1】:

只需如下更改您的微调器样式:

 <style name="spinnerStyleView"  parent="@android:style/Widget.TextView.SpinnerItem">
        <item name="android:background"> @drawable/notetvbg</item>
          <item name="android:textColor">@android:color/darker_gray</item>
    </style>

还可以查看Easily create a Default ,Custom styled Spinner,它对微调器样式进行了精美的解释。

将微调器项目置于中心

以下代码修改了 Hello Spinner 教程应用程序,以水平居中显示微调器文本内容,如以下两个屏幕截图所示。

res/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:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:gravity="center" />

MainActivity

     public class MainActivity extends Activity
     {
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);

          Spinner spinner = (Spinner) findViewById(R.id.spinner);
          ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array,
       //android.R.layout.simple_spinner_item);
        R.layout.my_spinner_textview);
        adapter.setDropDownViewResource(R.layout.my_spinner_textview);
       spinner.setAdapter(adapter);
      spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
    }

【讨论】:

  • 你能告诉我我是怎么做微调项目到中心的.. @Grishu
  • 谢谢解释,没有人说清楚。特别是注释掉 simple_spinner_item 以表明它需要替换。
【解决方案2】:

使用此代码制作样式微调器..

drawable/slim_spinner_normal.9.png

drawable/slim_spinner_pressed.9.png

drawable/spinner_back.xml

<?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
             <item android:state_pressed="true"
                   android:drawable="@drawable/slim_spinner_pressed" />
             <item android:drawable="@drawable/slim_spinner_normal" />
        </selector>

布局/main.xml

<RelativeLayout
    android:id="@+id/RL_TAG_FRAME"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Spinner
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/spinner_back.xml" />

</RelativeLayout>

其他皮肤

【讨论】:

  • 你能告诉我我是怎么做的微调项目居中..@XEENA
  • 我已经在上面提到过.. android:gravity="center" 没有将微调器文本设置为居中。有没有其他方法可以做到这一点。 @XEENA