- CompoundButton 源码分析
- LinearLayout 源码分析
- SearchView 源码解析
- LruCache 源码解析
- ViewDragHelper 源码解析
- BottomSheets 源码解析
- Media Player 源码分析
- NavigationView 源码解析
- Service 源码解析
- Binder 源码分析
- Android 应用 Preference 相关及源码浅析 SharePreferences 篇
- ScrollView 源码解析
- Handler 源码解析
- NestedScrollView 源码解析
- SQLiteOpenHelper/SQLiteDatabase/Cursor 源码解析
- Bundle 源码解析
- LocalBroadcastManager 源码解析
- Toast 源码解析
- TextInputLayout
- LayoutInflater 和 LayoutInflaterCompat 源码解析
- TextView 源码解析
- NestedScrolling 事件机制源码解析
- ViewGroup 源码解析
- StaticLayout 源码分析
- AtomicFile 源码解析
- AtomicFile 源码解析
- Spannable 源码分析
- Notification 之 Android 5.0 实现原理
- CoordinatorLayout 源码分析
- Scroller 源码解析
- SwipeRefreshLayout 源码分析
- FloatingActionButton 源码解析
- AsyncTask 源码分析
- TabLayout 源码解析
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
设置选中 checked 状态
public void setChecked(boolean checked) {
if (mChecked != checked) {
mChecked = checked;
refreshDrawableState();
notifyViewAccessibilityStateChangedIfNeeded(
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
// 避免多次调用 setChecked() 来多次调用回调监听
if (mBroadcasting) {
return;
}
mBroadcasting = true;
if (mOnCheckedChangeListener != null) {
mOnCheckedChangeListener.onCheckedChanged(this, mChecked);
}
if (mOnCheckedChangeWidgetListener != null) {
mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked);
}
mBroadcasting = false;
}
}
// 设置监状态听
public void setOnCheckedChangeListener(OnCheckedChangeListener listener) {
mOnCheckedChangeListener = listener;
}
void setOnCheckedChangeWidgetListener(OnCheckedChangeListener listener) {
mOnCheckedChangeWidgetListener = listener;
}
设置状态,就是传入一个 Boolean 值来设置状态,如果和初始化的 mChecked 相反,才会调用,然后调用 refreshDrawableState() 来刷新绘制的状态,然后下面就是设置状态改变的监听,通过 mBroadcasting 属性来避免多次设置回调,每次调用 mBroadcasting,如果为 true,则返回。
发现有两个监听,我们仔细看下面 setXxxListener() 的方法,而下面那个 setOnCheckedChangeWidgetListener() 方法不是 Public,所以说不是对外开放的,我们是不能调用的,文档中说明是仅供内部使用。因此我们想要监听选中状态,可以使用 setOnCheckedChangeListener()。
重写 onCheckedChanged(CompoundButton buttonView, boolean isChecked) 即可。对了,除了 setChecked() 可以设置状态,toggle() 每次也会 setChecked() 方法,每次都会讲状态设置为相反的。还有 isChecked() 方法,判断当前的选中状态。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论