gpt4 book ai didi

android - 如何最好使用 xml 为 tabwidget 按钮设置禁用状态的样式

转载 作者:行者123 更新时间:2023-11-29 17:57:16 25 4
gpt4 key购买 nike

我遇到了以下问题。我想为 tabbuton 禁用状态添加特殊图像,但它不起作用。这就是我在选择器中所做的。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/active" android:state_pressed="true"/>
<item android:drawable="@drawable/unactive" android:state_selected=true"/>
<item android:drawable="@drawable/disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/unactive"/>

</selector>

这与单个“独立”按钮的选择器完全相同,但它不起作用,即使启用了按钮,它也会显示禁用状态。我做错了什么?

编辑:感谢@NightCrawler 的建议,我发现这是激活非激活状态的最佳选择器,但我仍然无法在禁用按钮时使 state_enabled="false"显示不同的状态...

<item android:drawable="@drawable/active" android:state_selected="true"/>
<item android:drawable="@drawable/unactive" android:state_selected="false"/>
<item android:drawable="@drawable/disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/unactive"/>

解决方法:我继续在代码中实现禁用状态的图像更改:

tabWidget.getChildAt(4).setEnabled(true);
icon = (ImageView) wrapper.tabWidget.getChildAt(4).findViewById(R.id.icon);
icon.setImageResource(R.drawable.enabled)

tabWidget.getChildAt(4).setEnabled(false);
icon = (ImageView) wrapper.tabWidget.getChildAt(4).findViewById(R.id.icon);
icon.setImageResource(R.drawable.disabled)

这确实工作正常,但我仍然想知道是否可以仅使用 XML 为 tabwidget 中的按钮定义禁用状态。

调查结果:因此,经过更多的修补,我发现了为什么未注册禁用状态。在我的例子中,我为按钮使用自定义布局,这可能是任何自定义 tabhost 的人都会做的,并且可能会在该布局中有某种图像。具有上面定义的状态的可绘制对象将应用于布局中的该图像,而不是整个布局。即使是这个选择器也足以拥有 3 个所需的状态:

<item android:drawable="@drawable/menu_network_active" android:state_selected="true"/>
<item android:drawable="@drawable/menu_network_offline" android:state_enabled="false"/>
<item android:drawable="@drawable/menu_network_unactive"/>

但是当您禁用 tabwidget 按钮时,您必须像这样手动设置您在其中使用的图像也被禁用:

wrapper.tabWidget.getChildAt(0).setEnabled(false);
icon = (ImageView) wrapper.tabWidget.getChildAt(0).findViewById(R.id.icon);
icon.setEnabled(false);

在这种情况下,图像上会触发禁用的选择器状态,并显示所需的背景。

仍然没有解释:

这个谜题中唯一遗漏的是为什么在选择 tabbutton 时触发图像的选定状态而不是禁用状态。我什至尝试在“图标”上设置监听器,看看当您更改选项卡时是否会调用这些监听器,但那没有发生,选择器中的静止图像被设置为选中。所以基本上选择是在布局中的图像上触发(以某种方式)但禁用不是,我不知道为什么。如果查看此问题的人有一些发现,请添加评论或答案以供引用。对于那些只想解决类似错误的人,只需阅读 WOKRAROUND 或 FINDINGS 部分,因为这些可能会为您解决问题。

最佳答案

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Non focused states -->
<item android:drawable="@drawable/footer" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/footer_pressed" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>

<!-- Pressed -->
<item android:drawable="@drawable/footer_pressed" android:state_pressed="true" android:state_selected="true"/>
<item android:drawable="@drawable/footer_pressed" android:state_pressed="true"/>

</selector>`enter code here`

关于android - 如何最好使用 xml 为 tabwidget 按钮设置禁用状态的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489047/

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