【问题标题】:GridView Highlight selected ItemGridView 高亮选中项
【发布时间】:2015-04-28 09:48:42
【问题描述】:

我正在为网格项目使用自定义背景,并且正常工作,但是当我点击任何网格项目时(它不工作)

那么可能是什么原因,为什么当我点击任何网格项目时它不工作,而它在正常模式下工作..

对于 ImageGallery,我正在使用 this 教程并突出显示 this one 之后的网格项

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

    <item android:drawable="@color/blue" android:state_pressed="true" />
    <item android:drawable="@color/blue" android:state_selected="true" />
    <item android:drawable="@color/blue" android:state_focused="true" />
    <item android:drawable="@color/white" />

</selector>

网格项目布局 xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="@drawable/grid_background"
     android:descendantFocusability="blocksDescendants"
     android:padding="5dp">

    <ImageView
        android:id="@+id/grid_item_image"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:scaleType="centerCrop">
    </ImageView>

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="1dip" >

        <ProgressBar
            android:id="@+id/loading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:visibility="gone" />

    </FrameLayout>

</RelativeLayout>

这里是主网格 xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000">

    <!-- The GridView to display picture's preview  -->
    <GridView
        android:id="@+id/grid_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:numColumns="auto_fit"
        android:gravity="center"
        android:stretchMode="columnWidth"    
        android:drawSelectorOnTop="true"       
        android:focusable="true"
        android:clickable="true"
        android:scrollbars="none"
        > 
    </GridView>

</RelativeLayout>

这是我得到的正常结果,即使我点击了任何 GridView 项目:

【问题讨论】:

  • 移除背景并在 Gridview 的 'android:listSelector' 中尝试选择器。

标签: android xml gridview


【解决方案1】:

这可能会对您有所帮助 让你的选择器像这样

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

    <item android:drawable="@color/black" android:state_pressed="true" />
    <item android:drawable="@color/black" android:state_selected="true" />
    <item android:drawable="@color/black" android:state_focused="true" />
    <item android:drawable="@color/white" />

</selector>

和相对布局添加

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
      android:clickable="true"
     android:descendantFocusability="blocksDescendants" 
     android:background="@drawable/grid_background"
     android:padding="5dp">

    <ImageView
        android:id="@+id/grid_item_image"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:focusable="false"
        android:scaleType="centerCrop">
    </ImageView>

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:focusable="false"
        android:padding="1dip" >

        <ProgressBar
            android:focusable="false"
            android:id="@+id/loading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:visibility="gone" />

    </FrameLayout>

</RelativeLayout>

【讨论】:

  • 删除这一行 android:listSelector="@android:color/transparent"
  • 将此行添加到相对布局 android:descendantFocusability="blocksDescendants"
  • 你能试试我的回答吗@Oreo
  • android:listSelector="@drawable/grid_selector" 在你的gridview标签中添加这个
【解决方案2】:

像这样为你的选择器编写可绘制文件,称之为 selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/blue" />
        </shape>
    </item>

    <item android:state_pressed="false">
        <shape>
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</selector>

然后在gridview的xml里面添加以下两行

 android:drawSelectorOnTop="true"
 android:listSelector="@drawable/selector"

【讨论】:

  • 当手指从网格项目中抬起时颜色消失
猜你喜欢
  • 1970-01-01
  • 2020-12-12
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 2010-11-19
  • 1970-01-01
相关资源
最近更新 更多