【问题标题】:What's the state of a pressed Tab in AndroidAndroid中按下Tab的状态是什么
【发布时间】:2010-09-16 10:18:56
【问题描述】:

我正在尝试让我的 tabicon 在按下选项卡时更改(即,当您按下选项卡时它会改变颜色,但尚未释放)。我创建了一个如下选择器:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Non focused states --> 
    <item android:state_focused="false" 
          android:state_selected="false" 
          android:state_pressed="false" 
          android:drawable="@drawable/ic_tab_icon1" /> 
    <item android:state_focused="false" 
          android:state_selected="true" 
          android:state_pressed="false" 
          android:drawable="@drawable/ic_tab_icon2" /> 

    <!-- Focused states --> 
    <item android:state_focused="true" 
          android:state_selected="false" 
          android:state_pressed="false" 
          android:drawable="@drawable/ic_tab_icon3" /> 
    <item android:state_focused="true" 
          android:state_selected="true" 
          android:state_pressed="false" 
          android:drawable="@drawable/ic_tab_icon4" /> 

    <!-- Pressed --> 
    <item android:state_pressed="true" 
          android:drawable="@drawable/ic_tab_icon5" /> 
</selector> 

但是,由于某种原因,只能达到前两个状态(仅使用 icon1 和 icon 2)。谁能告诉我“按下但未选中”选项卡的正确状态是什么?

*为澄清新情况而编辑

【问题讨论】:

  • 你有没有发现这个问题?我遇到了同样的问题。根据 Android 文档,我的代码(和您的代码)似乎是正确的,但我无法让 state_pressed 工作......

标签: android state tabs android-tabhost tabwidget


【解决方案1】:

这是来自 Android 2.2 的 tab_indicator.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
    <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" />

    <!-- Focused states -->
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" />
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" />

    <!-- Pressed -->
    <item android:state_pressed="true" android:drawable="@drawable/tab_press" />
</selector>

你在android:state_pressed="true" 处没有任何东西。尝试更改您的选择器,使其看起来更像 Android 使用的。

【讨论】:

  • 我试过这个,但结果是一样的。如果我只将第一行(全部为假)更改为第一个图标,将所有其他更改为第二个,则按下选项卡时第一个图标仍会显示。
【解决方案2】:

这是安卓的默认tab_indicator.xml。来自这个gitkernal。你必须维护所有这些状态。

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Non focused states --> 
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/ic_tab_north_normal" /> 
    <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/ic_tab_north_selected" /> 

    <!-- Focused states --> 
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/ic_tab_north_normal" /> 
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/ic_tab_north_selected" /> 

    <!-- Pressed --> 
    <item android:state_pressed="true" android:drawable="@drawable/ic_tab_north_normal" /> 
</selector> 

【讨论】:

  • 我试过这个,但结果是一样的。如果我只将第一行(全部为假)更改为第一个图标,将所有其他更改为第二个,则按下选项卡时第一个图标仍会显示。
  • @Siebe:我使用您问题中提到的值编辑了代码。试试这个。
  • 感谢您的评论,但还是一样。我已将所有状态的图标更改为不同的图标,它似乎永远不会达到第 3、第 4 或第 5 个状态,即仅使用处于非聚焦状态的图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2019-06-20
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多