Android——用XML的selector实现按钮多态
16lz
2021-01-26
目标:按钮未按下时为(一)状态;按钮按下时为(二)状态,并在事件执行时保持该状态;事件结束后恢复为(一)状态;
实现过程:
(1) btn_status的xml代码:
1 <?xml version="1.0" encoding="utf-8"?>2 <selector xmlns:android="http://schemas.android.com/apk/res/android" >3 <item android:state_pressed="true" android:drawable="@drawable/bt_bg2" />4 <item android:state_focused="true" android:drawable="@drawable/bt_bg2" />5 <item android:state_enabled="false" android:drawable="@drawable/bt_bg2" />6 <item android:state_enabled="true" android:drawable="@drawable/bt_bg" />7 <item android:drawable="@drawable/bt_bg" />8 </selector>
(2) 使用到(1)的布局文件代码:
<LinearLayout android:id="@+id/linearBtnBg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="62dip" android:layout_marginRight="62dip" android:background="@drawable/btn_status"> <ImageButton android:id="@+id/imageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:contentDescription="@null" android:src="@drawable/bt_operate" android:clickable="false" /></LinearLayout>
(3) Java代码:
a) 点击 linearBtnBg 组件:
if (v.getId() == R.id.linearBtnBg) { linearBtnBg.setEnabled(false); }
b) 回调事件结束后:
private Callback mCallback = new Callback() { @Override public void onStateChanged(int state) { linearBtnBg.setEnabled(true); } };
更多相关文章
- android使用豆瓣API出现500错误及解决方法
- android 项目 local_Test_exam 代码分享
- Android(安卓)jni代码注册本地方法
- Android(安卓)开发第四天
- Android(安卓)RecyclerView 的点击事件
- Android(安卓)自定义实现switch开关按钮
- Android(安卓)8.1隐藏状态栏图标的实例代码
- android内存泄露优化总结
- android 通知播放系统声音