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

时间:2010-07-08 15:42:40

标签: android layout spinner

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

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

6 个答案:

答案 0 :(得分:24)

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

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

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

将此文件命名为:spinner_item_text.xml

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

adapter = new ArrayAdapter<CharSequence>(this, R.layout.spinner_item_text, items);
spinner.setAdapter(adapter);

请注意, 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>

就是这样!

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

答案 1 :(得分:18)

创建支持微调器的适配器时,可以设置微调器项的布局。

spinner.setAdapter(new ArrayAdapter(this, R.id.some_text_view));

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

<TextView android:id="@+id/some_text_view" android:textStyle="bold" />

答案 2 :(得分:16)

仅限XML

作为@Cyril REAL优秀答案的后续内容,如果您通过android:entries填充您的Spinner,这里是如何通过XML设置您的Spinners 的样式的全面实现。

如果您是通过代码创建 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>

答案 3 :(得分:9)

实际上,您可以通过xml自定义微调器的文本。

按照您自己的风格,定义一个:

<item name="android:spinnerItemStyle">@style/yourStyleForSpinnerItem</item>

并定义此样式:

<style name="yourStyleForSpinnerItem">

//stuff you want for the item style

</style>

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

答案 4 :(得分:2)

如果您不想要这样的解决方法,那么有一种简单的方法。从微调器获取textview并更改其参数:

TextView tv = (TextView) spin.getSelectedView();
tv.setTypeface(Typeface.DEFAULT_BOLD); //to make text bold
tv.setTypeface(Typeface.DEFAULT); //to make text normal

答案 5 :(得分:0)

如果您只想在spinner中更改弹出窗口View的背景,请调用此方法:

spinner.setPopupBackgroundResource(R.color.pa_md_white);