更改选择时的视图颜色

时间:2013-12-13 19:20:01

标签: android android-layout

当用户触摸视图时,是否有基本的XML android标记用于更改视图的背景颜色?说它是可点击的文本视图。当用户触摸TextView时,我想提供一些反馈(即更改背景颜色),以便用户知道它是一个按钮。

3 个答案:

答案 0 :(得分:0)

您可以使用style属性设置任何视图的背景。

您可以使用style属性修改按钮的文本颜色,字体和背景颜色。

执行此操作的步骤。

步骤1.定义名为res / drawable / button_clickedState.xml

的XML文件

button_clickedState.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item
 android:state_pressed="true"
 android:drawable="@drawable/btn_pressed" />
 <item
 android:state_pressed="false"
 android:drawable="@drawable/btn_normal" />
</selector>

第2步

在Onclick方法中,添加以下代码行。

b.setBackgroundResource(R.drawable.button_clickedState);// b is your button

此stackoverflow问题提供了有关如何为任何视图设置样式属性的详细信息。

How to programmatically setting style attribute in a view

答案 1 :(得分:0)

为此,您需要在Resources / drawable-hdpi目录

下创建XML say background.xml
       <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:state_pressed="true"
      android:drawable="@color/green"
        />
       </selector>

假设您的TextView是“tv”,然后在代码中添加以下行

        tv.setClickable(true);
        tv.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));

OPTIONAL

现在您可能(或可能不想)在用户触摸/按下按钮时更改文本颜色,因为您需要在resources / color目录中创建另一个xml说“textcolor.xml”,方法与background.xml相同已创建。

     <?xml version="1.0" encoding="UTF-8"?>

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true"
     android:color="#ffff0000"/>        <!-- color you want when view pressed-->
   <item android:color="@color/white" />  <!--or whatever is your default color-->
   </selector>

当然,您需要选择与背景相匹配的合适颜色。创建xml后,您需要在代码中添加以下行(同样假设TextView名称为“tv”

       XmlResourceParser parse==getResources().getXml(R.color.textcolor);
       ColorStateList csl=ColorStateList.createFromXml(getResources(), parse);
       tv.setTextColor(csl);

[注意:在您的Resources / values中创建一个文件color.xml并设置String颜色值]        

  <resources>
<color name="white"> #EFFBF5</color>
<color name="green">#008000</color>
  </resources>

答案 2 :(得分:0)

是的,它可以用XML完成。

首先在drawable文件夹中创建一个类似于上述答案的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/off_white" android:state_focused="true"/>
    <item android:drawable="@color/off_white" android:state_pressed="true"/>
    <item android:drawable="@color/white"/>

</selector>

然后设置属性android:background =“@ drawable / myDrawableSelector”。

<TextView
    android:id="@+id/login_email"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="80dp"
    android:background="@drawable/myDrawableSelector"
    android:padding="12dp" />