我有一个Spinner并使用ArrayAdapter。在适配器中,我使用" android.R.layout.simple_list_item_1",像这样:
spinnerControlObjectType.setAdapter(new ArrayAdapter(getApplicationContext, android.R.layout.simple_list_item_1, list))
我查看了android.R.layout.simple_list_item_1并看到它有这样的文字样式:
android:textAppearance="?android:attr/textAppearanceListItemSmall"
我想覆盖" textAppearanceListItemSmall"在我的主题中,为了给它一个不同的颜色,我该怎么做?我不想继承任何东西或编写代码样板。我确信有一种方法可以改变颜色,只更改theme.xml。
在android文档中写道:' ...引用样式属性实质上是说,"在当前主题中使用由此属性定义的样式。" .. 。' (http://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributes)。他们说"定义"和#34;在当前主题" - 如何在当前主题中定义它?让我疯了......
答案 0 :(得分:6)
为您的微调器项目制作自定义XML文件
<强> spinner_layout.xml 强>
添加自定义颜色
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_spinner"
android:textSize="16sp"
android:text="HELLO"
android:padding="10dp"
android:textColor="@color/colorAccent"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
使用此文件显示您的微调器项目
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.spinner_layout,ar);
mSpinner.setAdapter(adapter);
答案 1 :(得分:5)
您应该在主题中覆盖该属性,在此示例中我使用AppCompat主题作为父级,但您可以将其更改为任何其他主题。根据您的需要,您应该为不同版本的Android制作主题和样式资源:
<style name="MyTheme" parent="Theme.AppCompat.Light">
<item name="android:textAppearanceListItemSmall">@style/MySpinnerStyle</item>
</style>
<style name="MySpinnerStyle" parent="TextAppearance.AppCompat.Subhead">
<item name="android:textSize">13sp</item>
<item name="android:textColor">@color/white</item>
</style>
答案 2 :(得分:1)
我回答我自己的问题 - 所有的工作都像文件说的那样。我的问题是我想在Spinner组件中使用“android.R.layout.simple_list_item_1”。我一使用“android.R.layout.simple_spinner_item”就行了。
答案 3 :(得分:0)
试试这个,
// Initializing an ArrayAdapter
final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
this,R.layout.spinner_item,plantsList){
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView tv = (TextView) view;
// Set the Text color
tv.setTextColor(Color.parseColor("#FFC9A3FF"));
return view;
}
};
spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_item);
spinner.setAdapter(spinnerArrayAdapter);
答案 4 :(得分:0)
更改文字颜色。
((TextView) parent.getChildAt(0)).setTextColor(Color.BLACK);