Пользовательский диалог, который выглядит как AlertDialog - PullRequest
2 голосов
/ 07 февраля 2012

В настоящее время я создаю собственный диалог (alerttdialog недостаточно гибок для моих нужд).и я хочу, чтобы он выглядел как AlertDialog, с хорошо известным заголовком AlertDialog (см. изображение ниже).

Кроме того, в моем настраиваемом диалоговом окне есть представление списка, и я хочу, чтобы оно выглядело как представление списка AlertDialog.Как я мог это сделать?

Пока я нашел alertDialogTheme и alertDialogStyle в attr.класс, но я не знаю, как его использовать.

как это должно выглядеть при использовании пользовательского диалога: typical alertdialog with listview

как это выглядит (черный фон, неправильный заголовок): custom

мои макеты довольнопростой и выглядит следующим образом:

<?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="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10dp" >

    <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

список содержит элементы, которые используют этот макет

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:baselineAligned="false"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/icon_noimage" />

    <TextView
        android:id="@+id/text"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="1"
        android:ellipsize="end"
        android:singleLine="true"
        android:textColor="#ffffff"
        android:textSize="18dp" />

</LinearLayout>

какие-либо идеи?

---> обходной путь с помощью alertdialog с пользовательскимпосмотреть, но теперь у меня возникла следующая проблема с некоторыми пробелами:

gapsproblem

1 Ответ

5 голосов
/ 07 февраля 2012

Вы можете создать обычный AlertDialog, используя типичный AlertDialog заголовок / заголовок, но затем настроить содержимое диалогового окна на использование настраиваемого представления:

// Your custom layout can be whatever you want
View customLayout = getLayoutInflater().inflate(R.layout.customLayout, null);

// Create the dialog box
AlertDialog myDialog = new AlertDialog.Builder(this)
  .setTitle("My Title")
  .setView(customLayout)
  .create();

// Show the dialog box
myDialog.show();

Это приведет к нормальному видуAlertDialog с нормально выглядящим заголовком, но контент будет использовать любой пользовательский вид, который вы хотите.

Для ListView, который вы хотите отобразить в качестве контента, вам просто потребуется заново создать вид, который вы видитеустановите и используйте его как customLayout в моем примере.

...