我有一个用于创建日历的 GridView 。当我在日历/ GridView 外单击时,我无法保持初始选择突出显示。日历/ GridView 占据 View 的上半部分,位于 fragment 中,相应的列表将位于下方。我在 fragment 中的网格布局如下:
<GridView
android:id="@+id/weekGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:listSelector="@color/green"
android:numColumns="7" >
</GridView>
为了突出显示初始单元格,我在设置适配器后使用以下命令设置其位置:
calGrid.requestFocusFromTouch();
calGrid.setSelection(startPosition);
根据需要,初始选择为绿色。但是,一旦我点击离开 gridview,绿色背景就会消失。如果我要选择另一个单元格然后单击远离 gridview,则不会发生这种情况。在这种情况下,突出显示仍然存在。我试过在 gridview 上设置一个 onFocusChange 监听器。但这在 gridview 外部单击时不会被触发。我也尝试过在 android:listSelector 中使用选择器。
预先感谢您的帮助。
最佳答案
试试这个:
替换:
calGrid.requestFocusFromTouch();
calGrid.setSelection(startPosition);
与:
((ImageView)calGrid.getChildAt(startPosition)).setSelected(true);
我认为它应该可以解决您的问题,如果您没有使用 ImageView,请将转换更改为您正在使用的 View 类型。
关于android - 单击外部小部件时保留选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21144419/