【问题标题】:Change the view background when an item from a ListView is activated/selected激活/选择 ListView 中的项目时更改视图背景
【发布时间】:2013-11-09 11:23:56
【问题描述】:

我将解释(或至少尝试一下)我想要实现的目标,因为这让我发疯。

我有一个 ListView 并且项目具有以下布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/item_background"
        android:duplicateParentState="true" >

        ... some contents here...

    </FrameLayout>

</FrameLayout>

"item_background.xml" 包含一个选择器,因此背景会根据项目的状态而变化。当我按下并释放项目时它工作正常,但当我用 DPAD/轨迹球“选择”项目时它不起作用。我已经尝试了所有方法(state_activated、state_focused、state_selected...),但没有任何效果。我正在尝试搜索解决方案,但似乎找不到合适的关键字来搜索。

有什么想法吗?

谢谢!

【问题讨论】:

  • 您是否尝试将背景 (item_background) 设置为布局的根 FrameLayout(具有 10dp 填充)?
  • 我可以尝试一下,以确保它在那里工作。我会尽快做的。
  • 我刚刚尝试过,但它也不起作用。现在我很困惑。
  • 我刚刚做了另一个测试。在我的 ListView 中,我使用 '@color/transparent' 作为列表选择器(我不希望整个项目在我选择/按下它时变成蓝色,我想要完全控制)。我只是将默认选择器设置为进行一些测试并且效果很好,但是 FrameLayout 背景仍然没有改变(即使我将它放在根 FrameLayout 中)。我想我必须使用自定义列表选择器使其工作。

标签: android android-layout android-listview android-listfragment


【解决方案1】:

最后我修好了。问题在于我将项目放入选择器中的顺序(我在 state_selected="true" 之前放置了 state_pressed="false")。

现在它可以完美运行了。

感谢大家的帮助。

【讨论】:

    【解决方案2】:

    这很可能不起作用,因为根布局上方的某些布局获得了焦点(如果没有其余布局,很难分辨)。

    【讨论】:

    • 目前我正在使用上面发布的布局进行测试,但里面没有任何内容。
    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    相关资源
    最近更新 更多