2011-09-02 54 views
2

我創建一個自定義對話框如下:的Android定製對話框的LinearLayout大小相同的對話框BG圖像

Dialog myDialog = new Dialog(context, R.style.Theme_Levels); 
    myDialog.setContentView(R.layout.levelselector); 
    myDialog.show(); 

風格使用:

<style name="Theme.Levels" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowBackground">@drawable/dlgbg</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
</style> 

佈局xml文件:

<LinearLayout android:id="@+id/LevelSelector" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:layout_gravity="bottom|center_horizontal" 
    android:paddingBottom="50dip" 
    >  

    <Button android:text="Easy" 
     android:id="@+id/btn_Easy" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 
</LinearLayout> 

我希望該按鈕出現在對話框的底部中央(從底部起50dip填充),但它出現在對話框的左上角。

那是因爲LinearLayout不知道對話框的寬度/高度,這是我在樣式xml文件中使用的背景圖像的大小。

問:如何知道對話框的寬度高度,以便LinearLayout的大小與對話框大小相同?

+0

set layout_gravity for button。 –

回答

0

好吧,我已經找到了一種方式,而不是一個乾淨的方式,但工程。

您需要添加背景style.xml文件

<item name="android:windowBackground">@drawable/levelselectbg</item> 

,並在你的LinearLayout:

android:background="@drawable/levelselectbg" 

第一個背景必須保持對話無國界(這是我在指定我的問題我的style.xml)和linearlayout背景需要給佈局的大小,現在它知道它的尺寸,並將按鈕放在底部中心與填充。

希望這有助於某人,如果有更好的解決方案可用,請分享。

0

android:layout_gravity="bottom|center_horizontal"更改爲android:gravity="bottom|center_horizontal"

android:layout_gravity是佈局本身的重力w.r.t.其父母。 android:gravity適用於其內容。

+0

做了這項工作嗎? – Ronnie

+0

不,不幸的是,這並沒有奏效。 Inazaruk的回答做到了。 – droidbee

1

這裏是你如何能做到這一點:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LevelSelector" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="vertical" 
    android:paddingBottom="50dip" >  

    <View 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

    <Button android:text="Easy" 
     android:id="@+id/btn_Easy" 
     android:layout_gravity="center_horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

它在底部使用50dip填充,但左對齊。 – droidbee

+0

確保將'android:orientation =「vertical」'添加到'LinearLayout'。 – inazaruk

+0

它已被添加。我正在使用您發佈的確切代碼。另一個問題是,背景圖像被拉伸到覆蓋整個屏幕高度明智(我正在使用風景),雖然它小於屏幕尺寸。當我刪除標籤時,圖像大小顯示正確。 – droidbee

0

我在我的情況下,同樣的問題,我結束了使用RelativeLayout

這裏。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/body" android:layout_margin="20dip"  
android:layout_width="wrap_content" android:layout_height="wrap_content"  
android:background="@drawable/dialog_bg" 
> 

<TextView android:id="@+id/message"  
    android:layout_alignParentTop="true" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"  
    android:layout_margin="10dip" 
    android:inputType="textMultiLine"  
    android:textColor="@color/table_text" 
    android:textScaleX=".95" android:textStyle="bold"  
/> 
<TextView android:id="@+id/dummy" android:layout_below="@id/message" 
    android:layout_width="fill_parent" android:layout_height="60dip"   
    android:visibility="invisible" 
/> 
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:layout_margin="10dip" android:layout_below="@id/message" 
    android:layout_centerHorizontal="true" android:orientation="horizontal" 
> 
    <ImageButton android:id="@+id/ok" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:background="@drawable/button_alert" android:src="@drawable/btn_yes" 
     android:visibility="gone" android:layout_weight=".5" 
    /> 
    <ImageButton android:id="@+id/cancel" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"  
     android:background="@drawable/button_alert" android:src="@drawable/btn_no" 
     android:visibility="gone" android:layout_weight=".5" 
    /> 
</LinearLayout> 
</RelativeLayout> 
+0

您是否使用自定義對話框?你在你的relativelayout中指定了背景而不是你的風格xml?我將bg放在佈局中時遇到的主要問題是它的邊框不會保持隱藏狀態,我在我的樣式xml文件中將其設置爲null。 – droidbee

+0

此佈局通過指定layout_below屬性來添加項目,如果我只有一個按鈕只在底部顯示背景中的圖像,它將不起作用。 – droidbee