从下拉列表中选择一个项目后,我正在尝试更改微调按钮中显示的单个项目的文本颜色。我已经在Android SDK中仔细阅读了themes.xml和styles.xml一个小时,而且似乎找不到Spinner从何处获取颜色值。
为了澄清起见,我不是在尝试更改下拉菜单项的颜色,而是在没有下拉菜单时尝试更改微调框显示的文本的颜色。我想您可以将其称为微调框的“按钮”文本。
从下拉列表中选择一个项目后,我正在尝试更改微调按钮中显示的单个项目的文本颜色。我已经在Android SDK中仔细阅读了themes.xml和styles.xml一个小时,而且似乎找不到Spinner从何处获取颜色值。
为了澄清起见,我不是在尝试更改下拉菜单项的颜色,而是在没有下拉菜单时尝试更改微调框显示的文本的颜色。我想您可以将其称为微调框的“按钮”文本。
Answers:
我认为这可能是styles.xml中的这一点
<style name="Widget.TextView.SpinnerItem">
<item name="android:textAppearance">@style/TextAppearance.Widget.TextView.SpinnerItem</item>
</style>
<style name="Widget.DropDownItem.Spinner">
<item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item>
</style>
-=编辑=-这是结果:
这是完成的过程:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MooTheme" parent="android:Theme">
<item name="android:spinnerItemStyle">@style/MooSpinnerItem</item>
</style>
<style name="MooSpinnerItem" parent="android:Widget.TextView.SpinnerItem">
<item name="android:textAppearance">@style/MooTextAppearanceSpinnerItem</item>
</style>
<style name="MooTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem">
<item name="android:textColor">#F00</item>
</style>
</resources>
然后将其添加到您的AndroidManifest.xml中的应用程序标签中
android:theme="@style/MooTheme"
是的,CaseyB是正确的。
这是我设置微调器文本颜色的方法,这是一个简单的示例:
styles.xml
<style name="Theme.NoTitleBar.WithColoredSpinners" parent="@android:style/Theme.NoTitleBar">
<item name="android:spinnerItemStyle">@style/SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item>
</style>
<style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem">
<item name="android:textColor">#00FF00</item>
</style>
<style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner">
<item name="android:textColor">#FF0000</item>
</style>
</resources>
然后在清单中:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.NoTitleBar.WithColoredSpinners" >
现在,所有微调框外部的文本将变为绿色,而下拉菜单中的文本将变为红色。
android:
像这样删除<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
我是用另一种简单的技术做到的
从Android res / layout文件夹复制simple_spinner_item.xml和simple_spinner_dropdown_item.xml并将它们复制到您的项目中。
然后修改以下几行
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, Android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinnerSubject.setAdapter(adapter);
如:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
spinnerSubject.setAdapter(adapter);
其余的操作很容易,您现在可以编辑simple_spinner_item.xml以编辑微调小部件上一个可见项的外观,并编辑simple_spinner_dropdown_item.xml来更改下拉列表的外观。
例如,我的活动布局包含:
<Spinner
android:id="@+id/mo_spinnerSubject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/spinnerset_background" />
我的simple_spinner_item.xml现在包含:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/custom_white"
android:textSize="16sp" />
和simple_spinner_dropdown_item.xml看起来像:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@color/custom_black"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="@color/custom_white" />
您可以在Spinner对象上使用setOnItemSelectedListener,
spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249));
// OR ((TextView)parentView.getChildAt(0)).setTextColor(Color.RED);
}
});
实际上非常简单。我一直在寻找您,只需要创建样式并设置微调框
首先在Style.xml中创建主题
<style name="spinnerTheme" parent="android:Theme">
<item name="android:textColor">@color/gray_dark</item>
</style>
然后在您设置了微调器的xml中添加以下代码:
android:theme =“ @ style / spinnerTheme ”
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="50dp"
android:padding="10dp"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:layout_span="3"
android:layout_weight="1.3"
android:theme="@style/spinnerTheme"
android:textSize="12sp"
android:spinnerMode="dialog"
android:clickable="false"/>
享受编码
我认为文本没有颜色。如果您想更改微调框的颜色,则最有可能在android代码中进行了预定义。
这将包括更改ondraw()方法,然后您将旋转器绘制为您希望的样子。
我认为唯一可以解决此问题的是微调器的样式属性。
来源:http : //developer.android.com/reference/android/widget/Spinner.html
这可能会有所帮助:
可以通过重写getView方法来更改文本颜色,如下所示:
new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, list()){
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
View view = super.getView(position, convertView, parent);
//change the color to which ever you want
((CheckedTextView) view).setTextColor(Color.RED);
return view;
}
这对我有用,它使用微调器项目的自定义定义来创建自己的布局文件。
custom_spinner.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/txt_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#ffffff" />
使用适配器更改微调器项目
Spinner spinner= (Spinner) findViewById(R.id.spinner1);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.by_loc_array,R.layout.txt_spinner);
spinner.setAdapter(adapter);