Android - указание настраиваемой темы для настраиваемого диалога AlertDialog.Builder оборачивает содержимое в диалоге - PullRequest
4 голосов
/ 16 февраля 2012

Я создал собственную тему, которая наследуется от 'Theme.Holo.Light.Dialog'.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="cust_dialog" parent="@android:style/Theme.Holo.Light.Dialog"> 
</style>
</resources>

Мой код:

private AlertDialog testDialog;
AlertDialog.Builder testBuilder;
LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.test_dialog,
                                   (ViewGroup) findViewById(R.id.test_root));
testBuilder = new AlertDialog.Builder(this, R.style.cust_dialog);
testBuilder.setView(layout);
testBuilder.setTitle("Support");
testDialog = testBuilder.create();
testDialog.show();

Это заставляет мой диалог быть внутри диалога. Как мне это исправить?

Спасибо.

EDIT ::::

Это мой макет test_dialog.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/test_root"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          >


        <Button
            android:id="@+id/test1"
            android:layout_width="300dp"
            android:layout_height="75dp" 
            android:text="@string/test"

            android:gravity="center" />

        <Button
            android:id="@+id/test2"
            android:layout_width="300dp"
            android:layout_height="75dp" 
            android:text="@string/test"
            android:layout_below="@id/test1"
            android:gravity="center" />

</RelativeLayout>

Ответы [ 3 ]

6 голосов
/ 17 марта 2012

попробуйте это.

ContextThemeWrapper ctw = new ContextThemeWrapper( this, R.style.MyTheme );
            AlertDialog.Builder builder= new AlertDialog.Builder( ctw );
            LayoutInflater inflater = (LayoutInflater) ctw.getSystemService(LAYOUT_INFLATER_SERVICE);
            View view = inflater.inflate(R.layout.customdialogue,
                                           (ViewGroup) findViewById(R.id.layout_root));
0 голосов
/ 19 мая 2014

Вы можете попробовать это

AlertDialog.Builder builder = new AlertDialog.Builder(activity, R.layout.test_dialog);
0 голосов
/ 19 февраля 2013

Очень важно получить Inflater для макета не через обычный контекст, а через контекст обертки контекста ... в этот момент тоже немного боролся

...