gpt4 book ai didi

android - 实现自定义可检查的相对布局

转载 作者:行者123 更新时间:2023-11-29 01:52:58 26 4
gpt4 key购买 nike

我希望我的 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);
}
}
}

最佳答案

正确使用此布局很重要。首先当你在ListView中使用它时,你应该设置

listView.setItemsCanFocus(false)

并将选择模式设置为

listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE)

关于android - 实现自定义可检查的相对布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16865785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com