Android 闭合微调器的文本颜色
我知道关闭的微调器实际上是一个Android 闭合微调器的文本颜色,android,spinner,textcolor,Android,Spinner,Textcolor,我知道关闭的微调器实际上是一个视图,我想。但是我猜它有一个文本视图可以显示文本。如何访问该文本视图,以便更改文本颜色 编辑:我需要以编程方式动态更改此内容,而不是在XML中进行更改。 TextView v = (TextView) getView(mySpinner); v.setTextColor(..... 这不管用 谢谢大家! array_typ=new String[5]; array_typ[0]="Pressure"; array_typ[1]="Leve
视图
,我想。但是我猜它有一个文本视图
可以显示文本。如何访问该文本视图
,以便更改文本颜色
编辑:我需要以编程方式动态更改此内容,而不是在XML中进行更改。
TextView v = (TextView) getView(mySpinner);
v.setTextColor(.....
这不管用
谢谢大家!
array_typ=new String[5];
array_typ[0]="Pressure";
array_typ[1]="Level";
array_typ[2]="Overage";
array_typ[3]="Under";
array_typ[4]="Taken";
adaptertyp = new ArrayAdapter<Object>(this,R.layout.simple_spinner_item, array_typ);
typ.setAdapter(adaptertyp);
array_typ=新字符串[5];
数组类型[0]=“压力”;
数组类型[1]=“级别”;
数组类型[2]=“超龄”;
数组_typ[3]=“下”;
数组_typ[4]=“take”;
adaptertyp=new ArrayAdapter(此,R.layout.simple\u微调器\u项,数组\u类型);
典型设置适配器(适配器类型);
我知道闭合旋转器实际上是一个视图,我想
对。具体来说,它是您告诉您的SpinnerAdapter
创建的任何内容
但我猜它在某处有一个文本视图来显示文本
这取决于您告诉您的SpinnerAdapter
要创建的内容
如何访问该文本视图以便更改文本颜色
理想情况下,你不需要——你首先要给它正确的颜色,不管你告诉你的SpinnerAdapter
创建什么。如果颜色不同,请覆盖SpinnerAdapter
中的getView()
,并在该点更改颜色
在紧急情况下,您可以尝试调用
getSelectedView()
,以获取关闭的微调器所显示的当前视图
,但您在此处所做的任何更改都可能在用户下一次选择时被取消,如果较早的视图被回收,则备用颜色可能稍后返回。要修改文本颜色,请在res/layout文件夹中创建一个新的xml文件(例如my_spinner_text.xml)。向新xml文件添加文本视图,并修改所需方式:
<TextView android:id="@+id/spinnerText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:textColor="#CCCCCC"
android:textSize="20dp"
xmlns:android="http://schemas.android.com/apk/res/android"/>
创建使用新TextView的ArrayAdapter并将其设置为微调器:
Spinner localSpinner = (Spinner)findViewById(R.id.mySpinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinner_array,
R.layout.my_spinner_text);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
localSpinner.setAdapter(adapter);
Spinner localSpinner=(Spinner)findViewById(R.id.mySpinner);
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.spinner\u数组,
R.layout.my_微调器(文本);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
setAdapter(适配器);
要以编程方式执行此操作,必须扩展适配器类,例如:
ArrayAdapter<CharSequence> adapter = new ArrayAdater(this){
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
// change the color here of your v
v. ... etc. etc
}
}
ArrayAdapter adapter=新的ArrayAdater(此){
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图v=super.getView(位置、转换视图、父级);
//在这里更改v的颜色
v、 等等等等等等
}
}
您可以更改文本颜色,也可以在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));
}
spinnerObject.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图selectedItemView、整型位置、长id){
((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249249249));
}
要更改关闭微调器的Textcolor,我必须以这种方式进行操作
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.context_row_icon, null);
}
TextView mTitle = (TextView) view.findViewById(R.id.context_label);
ImageView flag = (ImageView) view.findViewById(R.id.context_icon);
mTitle.setText(values[position].getLabel(activity));
if (!((LabelItem) getItem(position)).isEnabled()) {
mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));
} else {
mTitle.setTextColor(activity.getResources().getColor(R.color.context_item));
}
return view;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.context_row_icon, null);
}
TextView mTitle = (TextView) view.findViewById(R.id.context_label);
ImageView flag = (ImageView) view.findViewById(R.id.context_icon);
mTitle.setText(values[position].getLabel(activity));
mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));
return view;
}
试试这个:
public void已选择(AdapterView父视图、视图视图、int位置、长id){
((TextView)parent.getChildAt(0)).setTextColor(getResources().getColor(R.color.colorPrimary));
你不能在它的XML文件中定义颜色吗?我在上面添加了如何创建微调器。我对Android和Java非常陌生,所以即使你的答案听起来像是有答案,我也不知道输入什么。你能给我看几行代码让我更改文本颜色吗?谢谢!!!@Mark Worsnop:“我在上面添加了创建微调器的方法。”--查看您的R.layout.simple\u spinner\u item
资源并更改其中的颜色。@Mark Worsnop:然后您需要覆盖getView()
并自定义您的文本视图的颜色,作为该过程的一部分。在此评论的最后是一个链接,指向我的一本书中讨论此过程的免费摘录。它是在列表视图
的上下文中实现的,但相同的概念在这里也适用。谢谢您,我确实非常感谢您的帮助!谢谢您花时间!'对我来说,我必须在xml文件中添加一个名称空间,您引用的网站似乎处于脱机状态。@ala请修复您评论中的链接。@Diederik,如果您引用的是。它不是URI链接,而只是xml元素的架构名称空间,并不指向任何网站。Eclipse建议添加名称空间来解决此问题我有一个问题。我更新了Vito的答案以包含名称空间。但是,如果您指的是,恐怕我没有建议使用此链接。也许Vito可以在这方面提供帮助。我看到了一个setBackgroundColor()
,但没有setTextColor()
这很有效!Budius的建议没有起作用,因为我无法设置文本颜色。这似乎效率低下-每次都设置颜色。通过扩展ArrayAdapter
并覆盖getDropDownView()
,可以一次在微调器中的所有项目上设置颜色。