2

我有一个网格视图,其中包含不同视图的项目,其中一个 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)); 
}

这是 Info 的 imageButton:

<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"
    />

另外,这里是信息吐司的代码:

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

4

3 回答 3

4

将此添加到 ImageButton 的根布局

android:descendantFocusability="blocksDescendants"
于 2013-08-09T11:48:52.977 回答
0

那是因为您的“信息按钮”已从您的网格视图项目中获得焦点,您只能单击该按钮,在这种情况下是“信息按钮”。但是,您也可以通过将“信息按钮”设置为不可聚焦来单击您的 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" />

希望这可以帮助。

于 2013-08-09T08:44:06.830 回答
0

尝试:

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

内部图像按钮

于 2013-08-09T08:22:59.603 回答