2012-07-15 33 views
0

我正在嘗試創建Alertdialog並以編程方式向圖形添加3個togglebuttons。以編程方式使用切換按鈕創建警報對話框

我試着開始與一個切換按鈕,由於某種原因的警告對話框中是非常小的(就在圖像)和按鈕本身看起來怪異(圖像比按鈕大)..

這裏是我的代碼,做發現任何錯誤?

LinearLayout ll = new LinearLayout(mActivity); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
    ToggleButton tb; 
    for(int i=0;i<cards.size();i++){ 
     Card card = cards.get(i); 
     tb = new ToggleButton(mActivity); 
     tb.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
     tb.setButtonDrawable(card.getDrawable(mActivity)); 
     ll.addView(tb); 
    } 


    AlertDialog.Builder builder; 
    AlertDialog alertDialog; 
    builder = new AlertDialog.Builder(mActivity); 
    builder.setView(ll); 
    alertDialog = builder.create(); 
    alertDialog.show(); 
+1

你能發表一張圖片嗎?也可以嘗試添加'builder.setTitle(「我的標題」);',也許給它一個標題會使它看起來像正常大小。 – FoamyGuy 2012-07-15 23:56:56

+0

給一個標題確實有幫助,但下面的答案解決了它 – Snake 2012-07-16 17:32:29

回答

1

我發現有時對話框或AlertDialog,即使你設置FILL_PARENT到根佈局,對話框將不能填滿屏幕。它的行爲實際上就像WRAP_CONTENT一樣。

所以我最終在大多數時間設置了固定的對話框寬度。

嘗試設置根的LinearLayout到一個固定的寬度:

ll.setLayoutParams(new LayoutParams(280 * scalingFactor, LayoutParams.FILL_PARENT)); 

凡scalingFactor是屏幕密度(1 MDPI,1.5 HDPI等)。

但是,我建議使用XML佈局作爲警報對話框。在設計器中查看它看起來很容易,而不是在代碼中執行它。例如讓我們把這種佈局文件my_toggle_button.xml:

<LinearLayout android:layout_width="280dp" android:layout_height="wrap_content" 
    android:orientation="vertical"> 
    <ToggleButton android:background="@drawable/customToggleButton" /> 
    <ToggleButton android:background="@drawable/customToggleButton" /> 
    <ToggleButton android:background="@drawable/customToggleButton" /> 
</LinearLayout> 

然後定義你想怎麼切換按鈕在繪製一個customToggleButton.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="false" android:drawable="@drawable/toggleButtonUnchecked" /> 
    <item android:state_checked="true" android:drawable="@drawable/toggleButtonChecked" /> 
</selector> 

您將需要提供兩個PNG文件toggleButtonUnchecked.png和toggleButtonChecked看巴紐。

在您的代碼中,不是構建控件,而是將R.layout.my_toggle_button充氣到視圖中,並調用AlertDialog的setView。

+0

謝謝你的詳細解答 – Snake 2012-07-16 17:32:03

相關問題