如何使文本视图可选?

时间:2014-06-02 08:15:35

标签: android android-layout

我使用适配器从内容提供商加载列表视图。列表中的每个项目都使用以下布局。

我正在寻找一种方法来使文本视图可选。我尝试过使用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");
        }

    }

但我仍然无法做两件事:

  1. 在上下文菜单出现之前,在列表视图中选择多个项目。
  2. 让上下文菜单显示为屏幕顶部的图标,类似于选择文本时默认情况。

0 个答案:

没有答案