0

我已经搜索了很长一段时间,但我还没有找到我要找的东西。我想让用户能够在我的文本视图上进行 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

4 回答 4

2

创建一个带有 EditText 的自定义对话框,并在 Long ClickListener 中打开此对话框,从 EditText(Dialog) 获取文本,并在用户按下对话框的 Ok 按钮后在 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;
                }
            });

提示.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>
于 2013-09-29T14:48:27.877 回答
2

您可能想要一个程式化的不可编辑的 EditText,当它被长按时,您可以使其可编辑和聚焦。

于 2013-09-29T14:49:43.857 回答
2

制作一个不可编辑的editText(如果需要,可以在其中显示任何消息),将 longClickListener 附加到 EditText ,当长按发生时,使其可编辑

于 2013-09-29T16:06:32.820 回答
1

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

于 2013-09-29T14:49:52.410 回答