问题的来源:
初学Android时,设计部给出的要求是当点击某一个大的控件(这个控件是个复杂的布局,中间有很多图标,文字之类的)会出现不同的效果。我们知道可以使用xml文件来实现按钮不同状态下的变化。但是当多个布局一起的时候就感觉不这样用了,至少我当时是准备用代码去实现的,其实根本就没有必要。最简单有效的办法:仍然是使用xml文件来实现,给你每个需要变化的控件都配置上相应的xml文件即可。
下面上代码。
<LinearLayout
android:id="@+id/ll_group"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/select_lly_op_menu_bg"
android:orientation="vertical" android:clickable = "true"
>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:textColor="@drawable/tab_menu_color"
android:text="我是测试文字"
android:gravity="center"
/>
</LinearLayout>
drawable 中的 xml文件。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true">
<!-- 定义当button 处于pressed 状态时的形态。 -->
<shape>
<!-- 实心 -->
<solid android:color="#16a6f9"/>
</shape>
</item>
<item android:state_pressed="true">
<!-- 定义当button 处于pressed 状态时的形态。 -->
<shape>
<!-- 实心 -->
<solid android:color="#16a6f9"/>
</shape>
</item>
<item android:state_focused="true">
<!-- 定义当button获得focus时的形态 -->
<shape>
<!-- 实心 -->
<solid android:color="#16a6f9"/>
</shape>
</item>
<item>
<!-- 定义当button 处于普通 状态时的形态。 -->
<shape>
<!-- 实心 -->
<solid android:color="#ffffff"/>
</shape>
</item>
</selector>
第二个xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_enabled="false"
android:color="#ffffff"/>
<item android:state_pressed="true"
android:color="#ffffff"/>
<item android:state_focused="true"
android:color="#ffffff"/>
<item android:state_selected="true"
android:color="#ffffff"/>
<item android:color="#16a6f9"/>
</selector>
如果只是上面的操作,你会发现没有什么效果、你需要给外层的linearLayout增加一个setOnClickable(true)的属性。因为默认的不可点击,需要让其能够点击。