gpt4 book ai didi

Android:即使指定了 duplicateParentState,子元素也会与其父元素共享按下状态

转载 作者:IT老高 更新时间:2023-10-28 23:05:07 25 4
gpt4 key购买 nike

我有一个 SlidingDrawer 元素,其中包含一个 RelativeLayout 元素,其中包含一些 Button 子元素:

<SlidingDrawer>
<RelativeLayout>
<LinearLayout>
<Button android:background="@drawable/foo.xml" android:duplicateParentState="false">
<Button android:background="@drawable/bar.xml" android:duplicateParentState="false">
</LinearLayout>
</RelativeLayout>
</SlidingDrawer>

foo.xml 和 bar.xml 具有根据状态应用不同图像的选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/foo_selected" />
<item android:state_pressed="true" android:drawable="@drawable/foo_selected" />
<item android:state_enabled="false" android:drawable="@drawable/foo_disabled" />
<item android:drawable="@drawable/foo_normal" />
</selector>

我看到的问题是,当我单击滑动抽屉 handle 时,按钮的按下状态被触发,并且它们看起来也被按下,即使我已将 duplicateParentState 指定为 false。

最佳答案

用子类覆盖 LinearLayout 类。在该子类中覆盖 setPressed 方法并且不执行任何操作:

public class UnpressableLinearLayout extends LinearLayout
{
@Override
public void setPressed(boolean pressed)
{
// Do nothing here. Specifically, do not propagate this message along
// to our children so they do not incorrectly display a pressed state
// just because one of their ancestors got pressed.
}
}

LinearLayout 替换为 UnpressableLinearLayout 的实例。

关于Android:即使指定了 duplicateParentState,子元素也会与其父元素共享按下状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6741908/

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