Проблема с пробелами в диалоге оповещений при просмотре текста и редактировании текста - PullRequest
3 голосов
/ 05 апреля 2011

Я не могу увидеть «МОИ ДАННЫЕ» в моем AlertDialog, так как он перекрывается EditText.

           Context context = MyActivity.this;
           AlertDialog.Builder alert = new AlertDialog.Builder(context);

            alert.setTitle(" NEW TITLE");
            alert.setMessage("MESSAGE 1");

            final TextView tx = new TextView(this);
            tx.setText("MY DATA");
            alert.setView(tx);

            // Set an EditText view to get user input   
              final EditText input = new EditText(this); 
              alert.setView(input);


            alert.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    /* User clicked OK so do some stuff */
                }
            });

            alert.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    /* User clicked Cancel so do some stuff */
                }
            });

            alert.create();
            alert.show();

Ответы [ 4 ]

5 голосов
/ 05 апреля 2011

Попробуйте это:

LinearLayout layout = new LinearLayout(this);
layout.setOrientation(Vertical);

            final TextView tx = new TextView(this);
            tx.setText("MY DATA");
            layout.addView(tx);

            // Set an EditText view to get user input   
              final EditText input = new EditText(this); 
              layout.addView(input);

 alert.setView(layout);
1 голос
/ 05 апреля 2011

Вы можете установить только один просмотр с помощью setView, поэтому «МОИ ДАННЫЕ» не отображаются - их вообще нет, поскольку они перезаписываются вашим EditText. Поменяйте местами порядок, в котором вы звоните setView, чтобы понять, что я имею в виду.

Чтобы иметь несколько представлений в качестве настраиваемого представления, вам необходимо создать ViewGroup, например LinearLeayout, добавить EditText и TextView к этой группе, а затем установить группу в качестве настраиваемого представления диалога.

// Create a ViewGroup to hold the other views
LinearLayout group = new LinearLayout(this);
group.setOrientation(LinearLayout.VERTICAL);

// Header for the TextView
final TextView txHeader = new TextView(this);
txHeader.setText("TEXTVIEW HEADER");
group.addView(txHeader);

// Add the textview to the group
final TextView tx = new TextView(this);
tx.setText("MY DATA");
group.addView(tx);

// Header for the EditText
final TextView inputHeader = new TextView(this);
inputHeader.setText("EDIT-TEXT HEADER");
group.addView(inputHeader);

final EditText input = new EditText(this); 
group.addView(input);

// Set the group as the custom dialog view
alert.setView(group);
0 голосов
/ 05 апреля 2011

попробуйте этот код

"LayoutInflater factory = LayoutInflater.from (nextScreen.this); окончательный просмотр textEntryView = factory.inflate (R.layout.text_entry, null);
окончательное собрание AlertDialog.Builder = новый AlertDialog.Builder (nextScreen.this); meeting.setView (textEntryView) .setTitle ( "Ok"); meeting.setPositiveButton («Создать», новый DialogInterface.OnClickListener () {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    TextView txt=(TextView) textEntryView.findViewById(R.id.username_edit);
                    Toast.makeText(nextScreen.this, txt.getText().toString(), Toast.LENGTH_SHORT);
                                        }
            });
            meeting.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {


                }
            });
            meeting.create();
            meeting.show();"

, а также в .xml файле

<EditText
    android:id="@+id/username_edit"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_marginLeft="20dip"
    android:layout_marginRight="20dip"
    android:scrollHorizontally="true"
    android:autoText="false"
    android:capitalize="none"
    android:gravity="fill_horizontal"
    android:singleLine="true"/>

0 голосов
/ 05 апреля 2011

Я предлагаю использовать пользовательский диалог, определить макет XML, например:

 <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/plausi" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="center_vertical" 
android:background="@color/tree_normal_back" 
android:padding="3dip">
<TextView 
    android:id="@+id/plausi_tv" 
    android:layout_width="fill_parent" 
    android:textSize="22dip"
    android:padding="2dip"
    android:layout_height="wrap_content" 
    android:background="@color/tree_normal_back" 
    android:textColor="@color/tree_normal_font" 
    android:minLines="4"/>
<EditText 
    android:layout_below="@+id/plausi_tv"
    android:id="@+id/plausi_et" 
    android:layout_width="fill_parent" 
    android:textSize="22dip"
    android:padding="2dip"
    android:layout_height="wrap_content" 
    android:textColor="@color/tree_input_font"/>
</RelativeLayout>    

и создайте диалог как:

LayoutInflater mInflater = LayoutInflater.from(tab3.this);
                     AlertDialog.Builder builder = new AlertDialog.Builder(tab3.this);
                     builder.setTitle("Plausibilitätscheck");

                     View convertView = mInflater.inflate(R.xml.plausi, null);
                     RelativeLayout rl = (RelativeLayout) convertView.findViewById(R.id.plausi);
                     final EditText et = (EditText) convertView.findViewById(R.id.plausi_et);
                     final TextView tv = (TextView) convertView.findViewById(R.id.plausi_tv);
                     tv.setText(Html.fromHtml(vorgabe));
                     et.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
                     et.setText(GlobalVars.form_adapter.DATA[clicked_index]);
                     et.addTextChangedListener(new TextWatcher(){
                        @Override
                        public void afterTextChanged(Editable arg0) {
                            // TODO Auto-generated method stub

                        }

                        @Override
                        public void beforeTextChanged(CharSequence arg0,
                                int arg1, int arg2, int arg3) {
                            // TODO Auto-generated method stub

                        }

                        @Override
                        public void onTextChanged(CharSequence arg0,
                                int arg1, int arg2, int arg3) {
                            // TODO Auto-generated method stub

                        }

                     });
                     builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                              // TODO Auto-generated method stub

                            }

                        } 
                     });
                     builder.setView(rl);


                     final AlertDialog alert = builder.create();
                     et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                            @Override
                            public void onFocusChange(View v, boolean hasFocus) {
                                if (hasFocus) {
                                    alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                                }
                            }
                        }); 
                     alert.show();
...