如何在Android中的图库中拖动图像时避免使用选择器

时间:2011-07-05 09:17:36

标签: android gallery selector

我在画廊中显示了一系列图像。当用户点击其中一个时,他们将被带到不同的视图。 我希望在用户执行点击时,在视图更改之前向用户提供一些反馈。

我定义了一个选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/pic_frame_pressed" />
    <item android:drawable="@drawable/pic_frame" /> <!-- default -->
</selector>

这很有效。当用户点击图库中的图像时,会显示一个框架......

但是,当用户使用图像向后拖动图库时,也会显示它。

我查看了我能为选择器找到的不同状态:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:color="hex_color"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>

我尝试了它们但找不到只在用户点击图像时触发的组合(例如“选中”总是为图库中心的图像触发)

我需要一种“state_clicked”......

1 个答案:

答案 0 :(得分:4)

我在这里遇到同样的情况 我找到的唯一解决方案是在OnItemClick事件上处理后台切换(这不是优雅的:/):

            mGallery.setOnItemClickListener(new OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View clickedView, int position, long id) {
                for(int i = 0; i < parent.getChildCount(); i++){
                    parent.getChildAt(i).setBackgroundResource(R.drawable.bg_menu);
                    ((TextView) parent.getChildAt(i)).setTextColor(getResources().getColor(R.color.white));
                }
                clickedView.setBackgroundResource(R.drawable.bg_menu_selected);
                ((TextView) clickedView).setTextColor(getResources().getColor(R.color.dark_blue));
                ((SectionAdapter) mGallery.getAdapter()).setSelected(position);
            }
        });

如您所见,我将所选位置存储在我的适配器上,以便在重绘时显示具有正确布局的项目(失去焦点)
我真的想找到另一个解决方案,但我还没有 如果有人得到它,我会很高兴听到:D