开发者

How to create and show dialog in the android application?

Good evening, programmers. I have a problem. Please help me to solve it. I am writing an android application. I can't create custom dialogs. I have errors or my application looks very awfully. I have some dialogs in my application. Here is of a part of my programm:

The view is very terrible, isn't it? I want that one of the layouts to be in the dialog but it appears in the main activity. Why?

dialogtable.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/LinearLayout01"
 android:orientation="vertical"
 android:layout_height="fill_parent"
 android:layout_width="fill_parent"
 >
  <LinearLayout
   android:id="@+id/LinearLayout02"
   android:orientation="horizontal"
   android:layout_height="fill_parent"
   android:layout_width="fill_parent"
   >

   <TextView
    android:id="@+id/textRows"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="left"
    android:text="Amount of rows "/>

   <TextView
    android:id="@+id/textColumns"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:text="Amount of columns"/>

  </LinearLayout>

  <LinearLayout 
   android:id="@+id/LinearLayout03"
   android:orientation="horizontal"
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   >

   <EditText
    android:id="@+id/EditText01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:inputType="number"
    android:gravity="right"/>


   <EditText
    android:id="@+id/EditText02"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"/>

  </LinearLayout>

  <LinearLayout 
   android:id="@+id/LinearLayout04"
   android:orientation="vertical"
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   >

  <TextView
    android:id="@+id/textBorder"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:text="Width of border"/>

  <EditText
    android:id="@+id/EditText03"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="right"/>

  </LinearLayout>
</LinearLayout>

The code from MainActivity

@Override
protected Dialog onCreateDialog(int id) {
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);

    View layout = inflater.inflate(R.layout.dialogtable, (ViewGroup)findViewById(R.id.LinearLayout01));

    AlertDialog.Builder alert = null;
    alert = new AlertDialog.Builder(this);
    alert.setView(layout);
    alert.setTitle("Create table");
    alert.setCancelable(false);
    alert.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {

        @Override
            public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });

    alert.setPositiveButton("OK",new DialogInterface.OnClickListener() {

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

            Editable rows = fieldForRows.getText();
            Editable columns = fieldForColumns.getText();
            Editable border = fieldForWidthOfBroder.getText();


            TableAction tableAction = new TableAction(MainActivity.this.visualPane);
            tableAction.insertTable(rows, columns, border);
        }
    });
    Dialog dialog = null;
    dialog = new Dialog(this);
    switch (id) {
    case IDD_CUSTOM_INSERT_TABLE:
        dialog.setTitle("Insert table");
        dialog.setContentView(R.layout.dialogtable);
        return dialog;
    case IDD_CUSTOM_INSERT_IMAGE:
        dialog.setTitle("Insert image");
        return dialog;
    default:
        return alert.create();
    }
}

The appearance of the application before calling showDialog():

http://s015.radikal.ru/i330/1101/d0/f7cc38852dc6.jpg

The appear开发者_StackOverflow社区ance of the application after calling showDialog():

http://s003.radikal.ru/i201/1101/f0/d1ebc436427f.jpg

Why it looks so terrible? What is wrong?


In your case you should use RelativeLayout instead of LinearLayout. So that you can set android:layout_weight and other relative properties on the TextViews to make their width equal.

Have a look at http://developer.android.com/resources/tutorials/views/hello-relativelayout.html and http://developer.android.com/reference/android/widget/RelativeLayout.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜