我用listview
实现了android ListActivity
。在这里我遇到的问题是,当我点击列表项时,当闪光颜色也没有出现时,没有执行任何动作,即橙色。所以你对我的问题的这个答案有任何想法。
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);
Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT)
.show();
}
我把这段代码也放到了Main ListActivity中。
你需要注意的第一件事是,只要你的ImageButtons
元素中存在像Buttons或ListView
这样的Clickable元素,它们就会控制点击事件。所以你的ListView
将没有机会接受点击事件。
你只需要将你的ListView中的focusable
或Button
的ImageButton
属性设置为false。但是它们仍然可以正常工作,而且ListView的onListItemClick
也可以工作。
试试这个,
<Button android:id="@+id/textsize_increaser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/back_button"
android:focusable="false"
android:text=" A + "/>
在这里,我添加了这个android:focusable="false"
,它工作正常。试试吧。
listItemButton.setFocusable(false);
listItemButton.setFocusableInTouchMode(false);
在适配器中设置以上内容。它不适用于XML
您是否将ListView的选择模式设置为SINGLE:
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
如果列表项中有任何可点击的imageview或textview或按钮,则使它们不可聚焦(在Adapter类中):
yourButton.setFocusable(false);
yourButton.setFocusableInTouchMode(false);
你在使用自定义适配器吗?并使用按钮或任何视图将列表列表视图焦点作为子项进行膨胀布局,然后它将无法正常工作。一定要设置
android:focusable="false"
到xml文件中的这种视图。希望这对你有用。
在listactivity java文件中设置它
listview1.setFocusable(false);
Eclipse建议我在布局xml中将textIsSelectable="true"
添加到我的TextViews中,用于列表视图。
好吧,如果要单击列表中的项目,则不应添加这些标记。
确保你是
如果滚动视图出现在上述任何位置,请将其删除
参考这篇文章寻求解决方案:
Click is not working on the Listitem Listview android
View v = parent.getChildAt(position);
parent.requestChildFocus(v,view);
v.setBackground(res.getDrawable(R.drawable."Some drawable for clicked row"));
int count = parent.getChildCount();
for(int i=0; i<count; i++)
{
if(i!=position)
{
v = parent.getChildAt(i);
v.setBackground(res.getDrawable(R.drawable."some drawable for not clicked row));
}
}
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int pos,
long id) {
Toast.makeText(v.getContext(), exm.get(pos).getDefinition(),
Toast.LENGTH_SHORT).show();
}
});
实际上有一个参数用于防止子视图获得焦点,只需在父布局中添加以下内容:
android:descendantFocusability="blocksDescendants"
正如文档所述:
ViewGroup将阻止其后代获得焦点。