2012-05-22 89 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

我改變了android:background =「@ drawable/shape」for android:windowbackground =「@ drawable/shape」,代碼錯誤,不允許:S: 錯誤:找不到屬性'windowbackground'的資源標識符'android' –

+0

這不是如何改變窗口背景。如果你想從XML做到這一點,那麼你需要定義一個主題。否則,只要執行'getWindow()。setBackgroundX()' –

回答

7

嘗試使用我的答案在這裏:how to get rounded dialog theme for activity(這與你正在嘗試做的事情是一樣的)。創建自定義主題(讓你自己的形狀繪製的引用):

<?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);