wrap_content, fill_parent - PullRequest
       4

wrap_content, fill_parent

1 голос
/ 19 марта 2012

Я создаю alertDialog для запроса данных для входа.

Я хотел бы использовать все горизонтальное пространство, но я не могу его получить:

AlertDialog.Builder loginData = new AlertDialog.Builder(activity);
    loginData.setTitle("Tus datos");
    LinearLayout layout = new LinearLayout(activity);
    layout.setOrientation(LinearLayout.VERTICAL);
    layout.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));

    LinearLayout linea1 = new LinearLayout(activity);
    linea1.setOrientation(LinearLayout.HORIZONTAL);

    linea1.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT, 
            ViewGroup.LayoutParams.WRAP_CONTENT));

    final TextView Usuario = new TextView(activity);
    Usuario.setText("Usuario");
    linea1.addView(Usuario);

    final EditText usuario = new EditText(activity);
    linea1.addView(usuario);

    layout.addView(linea1);
    // Set an EditText view to get user input

    LinearLayout linea2 = new LinearLayout(activity);
    linea2.setOrientation(LinearLayout.HORIZONTAL);

    linea2.setLayoutParams(new ViewGroup.LayoutParams(
           ViewGroup.LayoutParams.FILL_PARENT,
           ViewGroup.LayoutParams.WRAP_CONTENT));

    final TextView Contrasena = new TextView(activity);
            Contrasena.setText("Contraseña");
            linea2.addView(Contrasena);

    final EditText contrasena = new EditText(activity);
            linea2.addView(contrasena);

    layout.addView(linea2);

    loginData.setView(layout);

    loginData.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {

                    try{
                      //do the work 
                    } catch (Exception e){
                        e.printStackTrace();
                    }

                }
            });

    loginData.show();   
}

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 19 марта 2012

Вам потребуется получить ширину дисплея, а затем настроить параметры LayoutParams для AlertDialog на основе ширины дисплея.Я бы посоветовал вам добавить 10% отступов к ширине, чтобы весь экран не был заполнен.

Другой вариант - применить тему к вашей деятельности, которая напоминает диалог, это позволит вам использовать всю ширину.*. * 1003

0 голосов
/ 19 марта 2012

Попробуйте:

     ..... 
     usuario.setLayoutParams(new ViewGroup.LayoutParams(
                  ViewGroup.LayoutParams.FILL_PARENT,
                  ViewGroup.LayoutParams.WRAP_CONTENT));
     .....
     contrasena.setLayoutParams(new ViewGroup.LayoutParams(
                  ViewGroup.LayoutParams.FILL_PARENT,
                  ViewGroup.LayoutParams.WRAP_CONTENT)); 
     .....

Но, на мой взгляд, вы должны использовать XML для макета.

dialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

<TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="1"
        >
    <TableRow>
        <TextView
                android:id="@+id/label1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Usuario"
                />
        <EditText
                android:id="@+id/text1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                />
    </TableRow>
    <TableRow>
        <TextView
                android:id="@+id/label2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Contraseña"
                />
        <EditText
                android:id="@+id/text2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                />
    </TableRow>
</TableLayout>

В деятельности:

   ....
    LayoutInflater inf = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = inf.inflate(R.layout.dialog, null);

    AlertDialog.Builder loginData = new AlertDialog.Builder(this);
    loginData.setTitle("Tus datos");
    loginData.setView(layout);
    loginData.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {

            try{
                //do the work
            } catch (Exception e){
                e.printStackTrace();
            }

        }
    });

    loginData.show();

   .....
0 голосов
/ 19 марта 2012

Я не могу опубликовать вам правильный код, но я думаю, что вы должны использовать fill_parent для ширины и высоты. Я всегда использую

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>

в моих файлах XML макета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...