我希望我RelativeLayout
表明它已被检查。为此,我认为自定义RelativeLayout
将是最简单的,它将实现checkable
. 因此,当我单击一个项目时,这将被调用并修改我的布局。我认为最简单的方法是将其突出显示setBackgroundColor
为全息选择的蓝色。
首先,上面有什么问题吗?(也就是说,这听起来是个好主意吗?)
其次,它的工作原理是检查一个项目,如果我调用isChecked
它,它会返回正确的答案。但是,它不会更新 RelativeLayout 以指示它已被选中。我认为我的代码有问题。
public class CustomRL extends RelativeLayout implements Checkable {
private boolean isChecked;
List<RelativeLayout> rl = new ArrayList<RelativeLayout>();
Context context;
public CustomRL(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
@Override
public boolean isChecked() {
return isChecked;
}
@Override
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
for (RelativeLayout r : rl)
r.setBackgroundColor(isChecked ? Color.parseColor("#33b5e5")
: 0x00000000);
}
@Override
public void toggle() {
this.isChecked = !this.isChecked;
for (RelativeLayout r : rl)
r.setBackgroundColor(this.isChecked ? Color.parseColor("#33b5e5")
: 0x00000000);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
final int childCount = this.getChildCount();
for (int i = 0; i < childCount; ++i) {
getRelativeLayout(this.getChildAt(i));
}
}
private void getRelativeLayout(View v) {
if (v instanceof RelativeLayout) {
rl.add((RelativeLayout) v);
}
}
}