从后面查看没有响应单击android

时间:2013-08-09 08:16:57

标签: android gridview view onclick

我有一个包含不同视图的项目的gridview,其中有一个可能存在或不存在的ImageButton(取决于具体情况)。我为网格中的每个项目实现了onItemClick,但是当信息按钮存在(并按下)时,我还需要显示一个toast。一切正常,除了包含信息按钮的项目不再响应onItemClick这一事实,它们只响应被按下的信息图标。如何使这些项目相应地响应以单击信息按钮和其他区域?

以下是onItemClick()的代码:

@Override
public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {
        getDayStatus((Date) _monthVectorList.get(0).get(arg2));
        _listenerDateSelect.onDispatchDateSelect((Date) _monthVectorList.get(0).get(arg2)); 
}

,这是InfoButton for Info:

<ImageButton
    android:layout_width="15dp"
    android:layout_height="15dp"
    android:id="@+id/tv_day_info"
    android:layout_gravity="center"
    android:gravity="right|center"
    android:layout_marginLeft="1dp"
    android:onClick="infoToast"
    android:focusable="false"
    />

此外,这是info toast的代码:

public void infoToast(View view){
        Date date = (Date) view.getTag();
    List<String> dayDescription = getDayStatus(date);
    Context context = (Context) getApplicationContext();
    int duration = Toast.LENGTH_SHORT;
    CharSequence text = (String) dayDescription.get(2);

    Toast.makeText(context, text, duration).show();
    }

我尝试将焦点设置为imageButton,但它仍然不起作用。 我附上图片以更好地描述问题:http://oi42.tinypic.com/2rcxrv6.jpg

3 个答案:

答案 0 :(得分:4)

将其添加到ImageButton的根布局

android:descendantFocusability="blocksDescendants"

答案 1 :(得分:0)

尝试:

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

inside imagebutton

答案 2 :(得分:0)

因为你的“信息按钮”已经从你的gridview项目中获得了焦点,你只能点击按钮,在这种情况下是'info Button'。但是,您也可以通过将“信息按钮”设置为无法对焦来单击您的gridview项目。试试这个:

<Button
        android:id="@+id/your_info_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="info Button"
        android:focusable="false"
        android:focusableInTouchMode="false" />

希望这有帮助。