2012-05-22 2 views
0

В моем приложении я использую много диалогов (всплывающих окон), и я хочу дать им округлую форму угла.Как изменить форму диалога?

Как я создать эти всплывающие окна, это:

на Java кода создать такую ​​функцию:

private void showpopup(){ 

    dialog = new Dialog(this); 
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(getLayoutInflater().inflate(R.layout.popup, null)); 
    dialog.setCancelable(false); 



    TextView fin = (TextView) dialog.findViewById(R.id.solu); 
    fin.setText("¡¡safsfasfsafs!!"); 


    fin.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       dialog.dismiss(); 
       } 

    }); 
    dialog.show(); 
} 

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

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

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
      android:background="@drawable/shape" 
     android:orientation="vertical" 
     android:padding="10dp" 
     > 


<TextView 
    android:id="@+id/solu" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="25sp" 
    android:padding="10dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
    </LinearLayout> 

</LinearLayout> 

и, наконец, xml «форма», которую я вызываю в фоновом режиме, это:

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 

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

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

</shape> 

В результате это что-то вроде этого:

enter image description here

Как вы можете видеть, я не достичь того, чего я хочу ...

+0

Возможно, вы захотите установить фон фона вместо фона макета. –

+0

Я изменил андроид: background = "@ drawable/shape" для android: windowbackground = "@ drawable/shape", ошибка в коде, не разрешена: S: ошибка: идентификатор ресурса не найден для атрибута 'windowbackground' в пакете 'android' –

+0

Это не то, как один из них меняет фон окна. Если вы хотите сделать это из XML, вам нужно определить тему. В противном случае просто 'getWindow(). SetBackgroundX()' –

ответ

7

Попробуйте использовать мой ответ здесь: how to get rounded dialog theme for activity (Это то же самое, что вы пытаетесь сделать). Создайте собственную тему (сделать ссылку на вашу собственную форму Drawable):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="ThemeWithCorners" parent="android:Theme.Dialog"> 
     <item name="android:windowBackground">@drawable/another_test_drawable</item> 
    </style> 


</resources> 

(это будет в res/themes.xml). Затем просто добавьте тему к конструктору Dialog:

dialog = new Dialog(this, R.style.ThemeWithCorners); 
Смежные вопросы