【问题标题】:Selector not working in android gridview选择器在android gridview中不起作用
【发布时间】:2015-12-26 11:53:50
【问题描述】:

我像这样为 android Gridview 设置了一个选择器

mygridview.setSelector(R.drawable.my_background);

当我在 gridview 中单击一个孩子时,它工作正常(背景正在设置),并且在从 gridview 失去焦点后背景不会消失。

但是当我手动选择像 mygridview.setSelection(position) 这样的子视图时,它正在设置背景,但是 当它从 gridview 失去焦点时就会消失

顺便说一下,我的选择器是这样的:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid android:color="#08c246"/>
            <padding android:left="-5dp" android:bottom="-5dp" android:right="-5dp" android:top="-5dp"/>

        </shape>
    </item>
</selector>

我试过设置android:state_selectedandroid:state_checked,但没有用。

【问题讨论】:

  • 你想达到什么目的?使用 var 存储您选择的哪个并在 getView() 中自定义它。
  • 我希望 gridview 的子视图之一必须看起来像最初被点击的样子。 @tinysunlight

标签: android android-studio android-listview android-view android-gridview


【解决方案1】:

我猜: mGridView.setChoiceMode(GridView.CHOICE_MODE_SINGLE)

item.xml
<FrameLayout
android:background = "@drawable/my_background"
>
</FrameLayout>
my_background.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_selected = "true">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid android:color="#08c246"/>
            <padding android:left="-5dp" android:bottom="-5dp" android:right="-5dp" android:top="-5dp"/>

        </shape>
    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid android:color="#ffffff"/>
            <padding android:left="-5dp" android:bottom="-5dp" android:right="-5dp" android:top="-5dp"/>

        </shape>
    </item>
</selector>

【讨论】:

  • 这行不通。谢谢你的关注。我得到了我现在将发布的解决方案
【解决方案2】:

我终于得到了答案

  1. 不要像这样在gridview中设置选择器mygridview.setSelector(R.drawable.my_background)
  2. 像这样改变drawable:

    <item android:state_activated="true">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid android:color="#08c246"/>
            <padding android:left="-5dp" android:bottom="-5dp" android:right="-5dp" android:top="-5dp"/>
    
        </shape>
    </item>
    

  3. 将上面的drawable设置为cellview的背景(gridview的每个cell所使用的view)

  4. 要以编程方式从 gridview 中选择一个单元格,只需执行mygridview.setItemChecked(pos, true);

这对我有用!

【讨论】:

    猜你喜欢
    • 2014-07-22
    • 2016-02-03
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多