我在布局xml文件中创建一个微调器,并将字符串数组设置为此微调器。 如果我更改微调器的文本样式,则文本不受更改的影响。
我在googlegroups中读到一个微调器没有文本,因此textstyle无法更改,我必须更改微调器中显示的textview的样式。但是我该怎么做呢最好是在我的xml文件中。
答案 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)
作为@Cyril REAL优秀答案的后续内容,如果您通过android:entries
填充您的Spinner,这里是如何通过XML设置您的Spinners 的样式的全面实现。
如果您是通过代码创建 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>
答案 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);