按下按钮时更改Android微调器文本颜色

时间:2013-07-02 05:03:49

标签: android spinner

我有一系列ToggleButtons代表一系列主题。切换时,ToggleButton会更改其背景颜色以指示其状态。当处于checked状态时,ToggleButton颜色较深。

Selected state. enter image description here

Spinner覆盖ToggleButton并允许用户为主题选择难度。

按下ToggleButton时,如何更改微调器的文本颜色(白色)?我想我可以处理更改微调器选择器,但我正在努力找到一种方法来改变文本颜色。

4 个答案:

答案 0 :(得分:1)

在Spinner onItemSelected方法中你必须改变如下:

public void onItemSelected(AdapterView<?> parent, View arg1, int arg2,
    long arg3) {
// TODO Auto-generated method stub

item = (String) parent.getItemAtPosition(arg2);
((TextView) parent.getChildAt(0)).setTextColor(0x00000000);



  }

答案 1 :(得分:1)

尝试以下方式。

  1. 创建名为
  2. 的xml

    spinnertext.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/spinnerText"
        style="?android:attr/spinnerItemStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingBottom="2dp"
        android:paddingLeft="6dp"
        android:textColor="#41f2f3" />
    

    现在代码。

    ArrayAdapter<String> sp_adapter = new ArrayAdapter<String>(this, R.layout.spinnertext, your_array);
    
    sp.setAdapter(sp_adapter);
    

    然后使用切换按钮

        ToggleButton tb = (ToggleButton) findViewById(R.id.toggleButton1);
        tb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
                TextView tv = (TextView) findViewById(R.id.spinnerText);
                if (isChecked)
                    tv.setTextColor(Color.RED);
                else
                    tv.setTextColor(Color.BLUE);
    
            }
        });
    

    Reference

    试试这种方式。这适合我。我希望这对你也有用。

答案 2 :(得分:0)

我们的应用程序有一件事是自定义微调器视图。它后面有一个半透明的黑色圆角方块,略大于它。它适用于任何背景。

答案 3 :(得分:0)

Gunaseelan的回答帮助我指明了正确的方向。正如他所建议的那样,使用ToggleButton是可行的方法。 ToggleButton窗口小部件具有android:onClick XML属性,您可以使用该属性指定切换/单击ToggleButton时要运行的方法(如here所述。

设置微调器文本和微调器选择器的颜色可能有点困难。要更改微调文本颜色:

ToggleButton cardiologyToggle = (ToggleButton) findViewById(R.id.cardiology_toggle);
        if (cardiologyToggle.isChecked()) {
            spinnerText.setTextColor(Color.WHITE);
        } else {
            spinnerText.setTextColor(Color.BLACK);
        }

这仅更改选择微调器时显示的文本。