gpt4 book ai didi

java - 通过 id 查找父 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:23 24 4
gpt4 key购买 nike

我的布局有点复杂,我向这个 View 的 SwitchLayout 添加了一个标签。

此 View 中有一个 ImageButton。这是此按钮的小 map :

LinearLayout -> SwitchLayout -> RelativeLayout -> RelativeLayout -> ImageButton

有时我想获得附加到 SwitchLayout 的标签,但我所拥有的只是对 ImageButton 的引用。

我试图寻找一个ID,但似乎android只在向下搜索,所以

imageButton.findViewById(R.id.switchLayout);

不起作用。

看起来我也无法直接从 ImageButton 获取分配的标签。

这段代码:

imageButton.getTag()

返回 null

我找到的唯一解决方法是这里,但它很难看:

ViewSwitcher viewSwitcher = (ViewSwitcher)imageButton.getParent().getParent().getParent();
viewSwitcher.getTag();

我希望耦合尽可能周,所以我想知道是否有一种方法可以将标签分配给 viewSwitcher 及其所有子项,

或者在父 View 中查找ViewById。

最佳答案

为什么不只保留开关布局的引用?

// In activity
switchLayout = findViewById(R.id.switchLayout);
imageButton = findViewById(R.id.imageButton);

如果你的方法还在activity中,可以直接访问switchLayout,如果没有,可以将switchLayout设置为imageButton标签,稍后读取,

imageButton.setTag(switchLayout);

或者如果你真的需要这样做,你可以递归地做,

public ViewParent findParentRecursively(View view, int targetId) {
if (view.getId() == targetId) {
return (ViewParent)view;
}
View parent = (View) view.getParent();
if (parent == null) {
return null;
}
return findParentRecursively(parent, targetId);
}

关于java - 通过 id 查找父 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14190864/

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