2016-01-02 230 views
2

我實現我自己的dialog.This是xml - 代碼:對話框佈局不正確顯示

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.MainActivity" 
    android:gravity="center_vertical|center_horizontal" 
    android:background="#00ffffff"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="300dp" 
     android:layout_height="wrap_content" 
     android:background="#ad1457" 
     android:gravity="center" 
     android:layout_above="@+id/gameOptions_difficulty" 
     android:layout_alignLeft="@+id/gameOptions_difficulty" 
     android:layout_alignStart="@+id/gameOptions_difficulty" 
     android:id="@+id/gameOptions_title" 
     android:weightSum="1"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/gamemode_title" 
      android:layout_gravity="center_horizontal" 
      android:textColor="#efebe9" 
      android:textSize="10pt" 
      android:padding="10dp" 
      android:layout_marginBottom="8dp" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="300dp" 
     android:layout_height="wrap_content" 
     android:background="#ad1457" 
     android:id="@+id/gameOptions_difficulty" 
     android:layout_above="@+id/gameOptions_gameMode" 
     android:layout_alignLeft="@+id/gameOptions_gameMode" 
     android:layout_alignStart="@+id/gameOptions_gameMode" 
     android:baselineAligned="false" 
     android:minHeight="50dp" 
     android:padding="5dp" 
     android:gravity="center_horizontal" 
     android:weightSum="1"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:text="Easy" 
      android:id="@+id/easy_button" 
      android:layout_marginLeft="8dp" 
      android:onClick="setDifficulty" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:text="Medium" 
      android:id="@+id/medium_button" 
      android:onClick="setDifficulty" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:text="Hard" 
      android:id="@+id/hard_button" 
      android:onClick="setDifficulty" /> 
    </LinearLayout> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="300dp" 
     android:layout_height="169dp" 
     android:orientation="vertical" 
     android:gravity="center" 
     android:background="#ad1457" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/gameOptions_gameMode" 
     android:weightSum="3"> 

     <Button 
      android:id="@+id/roundbased_button" 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:onClick="setGameMode" 
      android:text="@string/roundbased_game_text" /> 

     <Button 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:text="@string/to_the_end_text" 
      android:onClick="setGameMode" 
      android:id="@+id/toTheEnd_button" 
      android:layout_gravity="center_horizontal" /> 

    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="300dp" 
     android:layout_height="wrap_content" 
     android:background="#ad1457" 
     android:layout_below="@+id/gameOptions_gameMode" 
     android:layout_alignLeft="@+id/gameOptions_gameMode" 
     android:layout_alignStart="@+id/gameOptions_gameMode" 
     android:id="@+id/gameOptions_footer"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/back_button_text" 
      android:id="@+id/back_button" 
      android:layout_weight="1" 
      android:onClick="clickExitButton" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/ok_button_text" 
      android:id="@+id/ok_button" 
      android:layout_weight="1" 
      android:onClick="clickOkButton" /> 
    </LinearLayout> 

</RelativeLayout> 

這裏是我創建對話框:

 gameOptions = new Dialog(MainActivity.this); 
     gameOptions.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
     gameOptions.setContentView(R.layout.dialog_gameoptions); 
     gameOptions.show(); 

在從Android Studio中的GUI生成器,我的佈局是這樣的:

gui builder

但是,當我啓動我的手機(HTC一個M9)在我的應用程序,佈局看起來是這樣的:

mobile device

如何我一定要改變我的佈局,它看起來像一個GUI Builder中?我錯過了什麼?謝謝!

+0

PLZ分享您的Java代碼it –

+0

看起來對話框不夠高,試着看看什麼決定了你的佈局的大小並修復它。 –

+0

它沒有顯示,因爲沒有足夠的空間讓這些視圖因爲你使用了一些靜態值。創建不同的dimen文件根據您的要求放置值,並使用這些值不給出靜態dp值。 – kId

回答

3

如果使用Relativelayout,則可以避免使用所有的Linearlayout。

例如,這是我的對話框

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context="com.ddz.diarioscolastico.Dialog_add_voto"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Inserire il voto" 
     android:id="@+id/textView4" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="numberDecimal" 
     android:ems="10" 
     android:id="@+id/voto_inserito" 
     android:layout_below="@+id/textView4" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="" 
     android:id="@+id/data_voto" 
     android:layout_below="@+id/voto_inserito" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Tipo di voto" 
     android:id="@+id/textView6" 
     android:layout_below="@+id/data_voto" 
     android:layout_centerHorizontal="true" /> 

    <Spinner 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/spinner_tipo_voto" 
     android:layout_below="@+id/textView6" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Aggiungi" 
     android:id="@+id/button_aggiungi" 
     android:layout_below="@+id/spinner_tipo_voto" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

這是很好的在手機和平​​板電腦太之一! 這是一個簡單的活動,在清單有此設置:

<activity 
     android:name=".Dialog_add_voto" 
     android:label="@string/title_activity_dialog_add_voto" 
     android:theme="@android:style/Theme.Holo.Light.Dialog" > 
    </activity> 

但對於你的佈局,我建議類似的東西嘗試後只使用RelativeLayout的:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.MainActivity" 
    android:gravity="center_vertical|center_horizontal" 
    android:background="#00ffffff"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#ad1457" 
     android:gravity="center" 
     android:layout_above="@+id/gameOptions_difficulty" 
     android:layout_alignLeft="@+id/gameOptions_difficulty" 
     android:layout_alignStart="@+id/gameOptions_difficulty" 
     android:id="@+id/gameOptions_title" 
     android:weightSum="1"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/gamemode_title" 
      android:layout_gravity="center_horizontal" 
      android:textColor="#efebe9" 
      android:textSize="10pt" 
      android:padding="10dp" 
      android:layout_marginBottom="8dp" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#ad1457" 
     android:id="@+id/gameOptions_difficulty" 
     android:layout_above="@+id/gameOptions_gameMode" 
     android:layout_alignLeft="@+id/gameOptions_gameMode" 
     android:layout_alignStart="@+id/gameOptions_gameMode" 
     android:baselineAligned="false" 
     android:minHeight="50dp" 
     android:padding="5dp" 
     android:gravity="center_horizontal" 
     android:weightSum="1"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:text="Easy" 
      android:id="@+id/easy_button" 
      android:layout_marginLeft="8dp" 
      android:onClick="setDifficulty" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:text="Medium" 
      android:id="@+id/medium_button" 
      android:onClick="setDifficulty" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:text="Hard" 
      android:id="@+id/hard_button" 
      android:onClick="setDifficulty" /> 
    </LinearLayout> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_contentt" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:gravity="center" 
     android:background="#ad1457" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/gameOptions_gameMode" 
     android:weightSum="3"> 

     <Button 
      android:id="@+id/roundbased_button" 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:onClick="setGameMode" 
      android:text="@string/roundbased_game_text" /> 

     <Button 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:text="@string/to_the_end_text" 
      android:onClick="setGameMode" 
      android:id="@+id/toTheEnd_button" 
      android:layout_gravity="center_horizontal" /> 

    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#ad1457" 
     android:layout_below="@+id/gameOptions_gameMode" 
     android:layout_alignLeft="@+id/gameOptions_gameMode" 
     android:layout_alignStart="@+id/gameOptions_gameMode" 
     android:id="@+id/gameOptions_footer"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/back_button_text" 
      android:id="@+id/back_button" 
      android:layout_weight="1" 
      android:onClick="clickExitButton" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/ok_button_text" 
      android:id="@+id/ok_button" 
      android:layout_weight="1" 
      android:onClick="clickOkButton" /> 
    </LinearLayout> 

</RelativeLayout> 
+0

我已經試過了,這只是從我的視圖中刪除第一個Linearlayouts:D – greedsin

+0

在我的應用程序中我有一些對話框,我建議只使用Relativelayout並且不要設置視圖的dp。現在我發佈更多的代碼,如果你和我的應用程序。 – Dario

1

這可能是由於您的Dialog大小,也就是說,您創建了很多LinearLayouts - RelativeLayouts與其他人。

當然,這不應該工作!

使用ScrollView如果這些項目大,或者你可能想看看這個教程:

http://developer.android.com/guide/practices/screens_support.html

,當然和,不信任Android Studio預覽所有的時間:)