我在这个网站上浏览过很多关于无法选择按钮和文本视图的列表视图的帖子。但是我的问题不同,我无法从其他相关帖子中得出结论。我有一个由 BaseAdapter 填充的列表视图。列表视图的布局是左侧有 2 个文本视图,每行右侧有一个按钮。我希望能够选择按钮以及列表视图的整行。
我知道使用时按钮正在获得焦点。有人能告诉我如何让按钮和整行都可以选择吗?
问候, 阿吉斯
我在这个网站上浏览过很多关于无法选择按钮和文本视图的列表视图的帖子。但是我的问题不同,我无法从其他相关帖子中得出结论。我有一个由 BaseAdapter 填充的列表视图。列表视图的布局是左侧有 2 个文本视图,每行右侧有一个按钮。我希望能够选择按钮以及列表视图的整行。
我知道使用时按钮正在获得焦点。有人能告诉我如何让按钮和整行都可以选择吗?
问候, 阿吉斯
我也遇到了同样的问题,下面是关于我如何在 Android API 级别 16 上解决它的示例代码。最重要的是将android:clickable和android:focusable设置为 true。
在您的行 XML 文件中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/list_selector_background"
android:clickable="true"
android:focusable="true"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:id="@+id/label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button" />
</LinearLayout>
在你的基础适配器中,你可以设置监听器做一些事情:
public class MyBaseAdapter extends BaseAdapter {
// Some other method implementation here...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Initialize the convertView here...
LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.row_layout);
Button button = (Button) convertView.findViewById(R.id.button);
layout.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(context, "Row clicked!", Toast.LENGTH_LONG).show();
}
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(context, "Button clicked!", Toast.LENGTH_LONG).show();
}
});
}
}
将 android:onClick 属性添加到布局 XML 中的按钮。
安卓:点击:
单击视图时要在此视图的上下文中调用的方法的名称。此名称必须对应于只采用一个 View 类型参数的公共方法。例如,如果您指定 android:onClick="sayHello",则必须声明您的上下文(通常是您的 Activity)的 public void sayHello(View v) 方法。
是的,您可以通过在布局中将按钮的可聚焦设置为 false 来做到这一点,这样做您将解决您的问题
列表只有在没有任何可聚焦的元素时才会单击。因此,如果您想单击列表和按钮,则将按钮的焦点设置为 false。通过这个你可以点击按钮和整个列表