OnLong点击textview进行编辑

时间:2013-09-29 14:37:01

标签: android textview

我已经搜索了很长一段时间了,但我还没找到我想要的东西。我想让用户能够在我的textview上执行onLongClick,当它是onlongclick时,它应该显示为内联编辑。因此,用户可以从textview更改数据并保存更改。到目前为止,这是我尝试过的:

     tv.setOnLongClickListener(this);

     @Override
     public boolean onLongClick(View v) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE);

        tv.setVisibility(View.VISIBLE);
        imm.showSoftInput(userInput, 0);
    return true;
}

但我不知道如何实际进行内联编辑。你有任何想法吗?我非常需要做这件事。非常感谢帮助。提前谢谢。

4 个答案:

答案 0 :(得分:2)

在其中创建一个包含EditText的自定义对话框,并在Long ClickListener中打开此对话框对话框,从EditText(对话框)中获取文本,并在用户按下对话框的“确定”按钮后在TextView中更新文本。

这是代码段

final TextView result=(TextView) findViewById(R.id.textview);



    result.setOnLongClickListener(
            new OnLongClickListener() {

                @Override
                public boolean onLongClick(View v) {
                    // TODO Auto-generated method stub

                    // get prompts.xml view
                    LayoutInflater li = LayoutInflater.from(Demo.this);
                    View promptsView = li.inflate(R.layout.prompts, null);

                    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                            Demo.this);

                    // set prompts.xml to alertdialog builder
                    alertDialogBuilder.setView(promptsView);

                    final EditText userInput = (EditText) promptsView
                            .findViewById(R.id.editTextDialogUserInput);

                    // set dialog message
                    alertDialogBuilder
                            .setCancelable(false)
                            .setPositiveButton("OK",
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(
                                                DialogInterface dialog,
                                                int id) {
                                            // get user input and set it to
                                            // result
                                            // edit text
                                            result.setText(userInput
                                                    .getText());
                                        }
                                    })
                            .setNegativeButton("Cancel",
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(
                                                DialogInterface dialog,
                                                int id) {
                                            dialog.cancel();
                                        }
                                    });

                    // create alert dialog
                    AlertDialog alertDialog = alertDialogBuilder.create();

                    // show it
                    alertDialog.show();

                    return false;
                }
            });

<强> prompts.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Edit you Text : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editTextDialogUserInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <requestFocus />
    </EditText>

</LinearLayout>

答案 1 :(得分:2)

你可能想要一个风格化的不可编辑的EditText,你可以在longClicked时进行编辑和聚焦。

答案 2 :(得分:2)

制作 不可编辑的editText (并根据需要显示其中的任何消息),将longClickListener附加到EditText,当长按时, 使其可编辑

答案 3 :(得分:1)

您需要创建一个隐藏的editText,并且当长时间单击textView时,隐藏textview并显示隐藏的edittext。完成编辑后,隐藏edittext并再次显示textView。