1.checkbox的setClickable(false)无效
页面第一次加载时,无效,然后点击一次checkbox就生效了。
checkBox.setClickable(false);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
出现这个状况原因就是因为把setClickable()放到了setOnClickListener()前面。为什么会这样呢,理由如下:
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}
我们有两种方法解决这个问题:(1)代码调换顺序(2)使用setEnabled()替代。强烈推荐使用第二种方法,因为这个方法设置为false的时候还可以将控件变成灰色,更直观。
//方法1:
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
checkBox.setClickable(false);
//方法2:
checkBox.setEnabled(false);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
//checkBox.setEnabled(false); //放在这里也可以,和setOnClickListener()没有前后顺序的要求
2.recyclerview滚动后一个item占满整个父布局,原因是item的高度设置成了matchparrent
错误样例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBox
android:id="@+id/filter_checkbox"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/checkbox_style"
android:checked="false"/>
</LinearLayout>
正确样例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBox
android:id="@+id/filter_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/checkbox_style"
android:checked="false"/>
</LinearLayout>