我有一个包含不同视图的项目的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
答案 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" />
希望这有帮助。