Android: в диалогах есть дополнительное, уродливое место на droid 3? - PullRequest
2 голосов
/ 13 марта 2012

Первое изображение от Galaxy Note, второе от Droid 3. Оба они созданы из приведенного ниже кода.

В диалоге на Droid 3 есть много лишнего, уродливого пространства. Это пространство еще страшнее в более сложных диалогах. Есть ли способ предотвратить это?

public void onCreate(Bundle bundle)
    {
        super.onCreate(bundle);

        TextView tv = new TextView(this);
        tv.setText("Hello!");

        Dialog dialog = new Dialog(this);
        dialog.setContentView(tv);
        dialog.setTitle("Hi!");

        dialog.show();
    }

enter image description here

enter image description here

1 Ответ

3 голосов
/ 22 марта 2012

Эти настройки пользовательского интерфейса Droid сводят меня с ума!

Если вы хотите управлять своими диалогами, чтобы сделать их согласованными на разных устройствах, вы можете сократить их до базовых с помощью конструктора, который предоставляет параметр стиля.В следующем примере показано диалоговое окно, которое выглядит следующим образом:

sample dialog

Сначала создайте экземпляр своего диалогового окна следующим образом (или еще лучше, создайте собственный класс, расширяющий Dialog, чтобы вы могли использовать его повторно)):

Dialog dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar);
dialog.setContentView(R.layout.custom_dialog_layout);

Затем укажите файл custom_dialog_layout.xml (может выглядеть примерно так):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    style="@style/VerticalLinearLayout"
    android:background="@android:color/transparent"
    android:gravity="center_vertical|center_horizontal" >

    <LinearLayout
        android:id="@+id/dialog_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="@drawable/dialog_background"
        android:orientation="vertical" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:textColor="@android:color/white"
            android:text="Hi!" />

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:textColor="@android:color/white"
            android:text="Hello!" />

    </LinearLayout>
</LinearLayout>

, где dialog_background.xml выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <corners android:radius="10dp" />

    <stroke
        android:width="1dp"
        android:color="@android:color/black" />

    <gradient
        android:angle="0"
        android:startColor="@android:color/white"
        android:endColor="@android:color/white" />

</shape>

И если вы действительно хотите получить фантазию, вы можете попробовать применить тень к диалоговому окну в коде, используя что-то вроде этого SO ответа: https://stackoverflow.com/a/3723654/475217

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