如何更改微调器的文本样式?

Jan*_*usz 14 layout android spinner

我正在我的布局xml文件中创建一个微调器,并为这个微调器设置一个字符串数组.如果我更改微调器的文本样式,则文本不受更改的影响.

我在googlegroups中读到一个微调器没有文本,因此textstyle无法更改,我必须更改微调器中显示的textview的样式.但是我该怎么做呢 最好在我的xml文件中.

Osc*_* S. 25

正如我的前任所指定的那样,你不能在Spinner组件所在的主XML布局文件中这样做.

上面的答案很好,但是如果我们想要使用谷歌的最佳实践,就像你知道的那样......将风格用于所有事情......你可以按照以下三个简单步骤来实现:

第1步:在布局文件夹下需要一个额外的文件,其中包含Spinner项目的外观:

<?xml version="1.0" encoding="utf-8"?>
<TextView  
    android:id="@+id/textViewSpinnerItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="@style/SpinnerTextViewItem"
    xmlns:android="http://schemas.android.com/apk/res/android" />
Run Code Online (Sandbox Code Playgroud)

将此文件命名为:spinner_item_text.xml

第2步:然后,当您使用一系列项目填充Spinner时,在您的Activity类上:

adapter = new ArrayAdapter<CharSequence>(this, R.layout.spinner_item_text, items);
spinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

请注意,R.layout.spinner_item_text资源位于您自己的R文件中.

第3步:在您的values文件夹下,创建或使用(您可能已经拥有)文件styles.xml.所需的样式条目应如下所示:

<style name="SpinnerTextViewItem" parent="@android:style/Widget.TextView" >
    <item name="android:textSize" >8dp</item>
    <item name="android:textStyle" >bold</item>
</style>
Run Code Online (Sandbox Code Playgroud)

就是这样!

到目前为止,将所有文本大小,样式,颜色等都放在styles.xml文件上真的非常方便,因此很容易维护.


Rob*_*ond 18

创建支持Spinner的Adapter时,可以设置微调器项的布局.

spinner.setAdapter(new ArrayAdapter(this, R.id.some_text_view));
Run Code Online (Sandbox Code Playgroud)

您可以按照自己的方式设置some_text_view的样式.

<TextView android:id="@+id/some_text_view" android:textStyle="bold" />
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 android:entries,那么它会在内部创建一个以 android.R.layout.simple_spinner_item 作为布局的 ArrayAdapter,并且您无法更改该布局,因为它是 android 的内部布局。 (2认同)

Jos*_*ter 18

仅通过XML

作为后续@Cyril REAL的出色答卷,这里是一个彻底的落实如何风格你纱厂只是通过XML如果您是通过填充你的微调android:entries.

如果您通过代码创建Spinner,但如果您通过XML设置Spinner条目(即使用)android:entries,则上述答案有效,那么您可以使用以下两个主题设置调整文本大小和其他属性:

在res/values/styles.xml中

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppBaseTheme" parent="android:Theme.Holo">
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">

        <!-- For the resting Spinner style -->
        <item name="android:spinnerItemStyle">
            @style/spinnerItemStyle
        </item> 

        <!-- For each individual Spinner list item once clicked on -->
        <item name="android:spinnerDropDownItemStyle">
            @style/spinnerDropDownItemStyle
        </item>

    </style>

    <style name="spinnerItemStyle">
        <item name="android:padding">10dp</item>
        <item name="android:textSize">20sp</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

    <style name="spinnerDropDownItemStyle">
        <item name="android:padding">20dp</item>
        <item name="android:textSize">30sp</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

  • 对于AppCompat主题,只需像这样&lt;android&gt;删除&lt;item name =“ spinnerDropDownItemStyle”&gt; @ style / mySpinnerItemStyle &lt;/ item&gt; (2认同)

小智 9

实际上你可以通过xml自定义微调器的文本.

以您自己的风格,定义:

<item name="android:spinnerItemStyle">@style/yourStyleForSpinnerItem</item>
Run Code Online (Sandbox Code Playgroud)

并定义此样式:

<style name="yourStyleForSpinnerItem">

//stuff you want for the item style

</style>
Run Code Online (Sandbox Code Playgroud)

在java代码中实例化微调器的适配器时,可以使用默认的android.R.layout.simple_spinner_item