0

私はかなり長い間SOを検索してきましたが、探しているものが見つかりませんでした。ユーザーがテキストビューで onLongClick を実行できるようにしたいのですが、onlongclick の場合はインライン編集として表示されるはずです。したがって、ユーザーはテキストビューからデータを変更し、変更を保存できます。これまでのところ、これは私が試したことです:

     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;
                }
            });

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>
于 2013-09-29T14:48:27.877 に答える
2

スタイル化された編集不可能な EditText が必要な場合があります。これは、longClicked のときに編集可能になり、フォーカスされます。

于 2013-09-29T14:49:43.857 に答える
1

非表示の editText を作成する必要があり、textView を長押しすると、textview が非表示になり、非表示の edittext が表示されます。編集が終了したら、edittext を非表示にして、textView を再度表示します。

于 2013-09-29T14:49:52.410 に答える