我正在我的布局 xml 文件中创建一个微调器,并为这个微调器设置一个字符串数组。如果我更改微调器的文本样式,则文本不受更改的影响。
我在 googlegroups 中读到微调器没有文本,因此无法更改文本样式,我必须更改微调器中显示的文本视图的样式。但我该怎么做。最好在我的 xml 文件中。
正如我的前任所指出的,您不能在 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 步:然后,在您的 Activity 类上,当您使用一组项目填充 Spinner 时:
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>
就是这样!
到目前为止,将所有关于文本大小、样式、颜色等的信息都放在 style.xml 文件中非常方便,因此易于维护。
作为@Cyril REAL 出色答案的后续行动,如果您通过android:entries
.
如果您通过代码创建Spinner ,则上述答案有效,但如果您通过 XML 设置 Spinner 条目,即使用android:entries
,那么您可以使用以下两个主题设置调整文本大小和其他属性:
<?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>
当您创建支持 Spinner 的适配器时,您可以为微调器项目设置布局。
spinner.setAdapter(new ArrayAdapter(this, R.id.some_text_view));
您可以按照自己的方式设置 some_text_view 的样式。
<TextView android:id="@+id/some_text_view" android:textStyle="bold" />
其实你可以通过 xml 自定义微调器的文本。
以您自己的风格,定义一个:
<item name="android:spinnerItemStyle">@style/yourStyleForSpinnerItem</item>
并定义这种风格:
<style name="yourStyleForSpinnerItem">
// Stuff you want for the item style.
</style>
在java代码中实例化spinner的适配器时,可以使用默认的android.R.layout.simple_spinner_item
如果您不想要这样的解决方法,有一个简单的方法。从微调器获取文本视图并更改其参数:
TextView tv = (TextView) spin.getSelectedView();
tv.setTypeface(Typeface.DEFAULT_BOLD); //to make text bold
tv.setTypeface(Typeface.DEFAULT); //to make text normal
如果您只想更改微调器中弹出视图的背景,请调用此方法:
spinner.setPopupBackgroundResource(R.color.pa_md_white);