gpt4 book ai didi

android - 将 gridview 项目可检查状态传播给 child

转载 作者:行者123 更新时间:2023-11-30 03:10:51 25 4
gpt4 key购买 nike

我有一个如下所示定义的 Gridview 项,我扩展了 RelativeLayout 以使其可检查,这工作正常。

现在我还希望 ImageView(在 RelativeLayout 内)接收到可检查状态,所以我扩展了它,但是永远不会调用 setChecked 方法并且图像永远不会改变其样式

我尝试将 duplicateParentState 设置为 true 添加到 ImageView 但没有成功。

也许我的做法是完全错误的,如何在选中父RelativeLayout时更改ImageView样式?

grid_view_item.xml

<?xml version="1.0" encoding="utf-8"?>
<com.my.CheckableRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gridview_selector"
android:orientation="vertical" >

<com.my.CheckableImageView
android:id="@+id/thumbnail_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/place_holder" />

<TextView
android:id="@+id/caption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/thumbnail_image"
android:layout_centerHorizontal="true" />

</com.my.CheckableRelativeLayout>

CheckableRelativeLayout

public class CheckableRelativeLayout extends RelativeLayout implements Checkable {
private boolean isChecked;

/** all ctors removed for simplicity */

public boolean isChecked() {
return isChecked;
}

public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
setSelected(isChecked);
}

public void toggle() {
setChecked(!isChecked);
}
}

检查 ImageView

public class CheckableImageView extends ImageView implements Checkable {
private boolean isChecked;

/** all ctors removed for simplicity */

@Override
public boolean isChecked() {
return isChecked;
}

@Override
public void setChecked(boolean checked) {
isChecked = checked;
setImageAlpha(isChecked ? 100 : 255);
}

@Override
public void toggle() {
setChecked(!isChecked);
}
}

最佳答案

多亏了这个隐藏的(网络上的)gem post,我自己找到了解决方案

技巧在于为所有 Checkable 子级调用 setChecked,因此我只是将相关代码添加到 CheckableRelativeLayout

关于android - 将 gridview 项目可检查状态传播给 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002726/

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