我使用适配器从内容提供商加载列表视图。列表中的每个项目都使用以下布局。
我正在寻找一种方法来使文本视图可选。我尝试过使用android:textIsSelectable="true"
和android:selectAllOnFocus="true"
,但这些只会使文本视图中的文字可供选择。我想让整个文本视图本身可选,而不只是其中的文本,以便我可以添加删除和共享等功能。有没有办法实现这个目标?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id ="@+id/wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txt_chat"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:textIsSelectable="true"
android:selectAllOnFocus="true"
/>
</LinearLayout>
</LinearLayout>
修改:
正如@kgandroid在评论中所建议的那样,我使用上下文菜单通过以下代码部分实现了我想要的功能。我还从项目布局文件中删除了android:textIsSelectable"
和android:selectAllOnFocus
属性。
onCreate(){
..
...
lv_chatMessages = (ListView) findViewById(R.id.listview_chat);
registerForContextMenu(lv_chatMessages);
...
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
if(v.getId() == R.id.listview_chat){
ListView lv = (ListView) v;
AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.add("first option");
menu.add("second option");
}
}
但我仍然无法做两件事: