2016-01-27 116 views
1

我想爲android創建一個應用程序,並且爲片段創建了一個xml文件。 在預覽中,這是Nexus 4我可以看到項目(buttons, text view, etc.)佔用所有空間,但是當我在我的手機上運行我的應用程序時(s6 edge +),就有1/5的屏幕空閒。 我的身高設置在wrap_content的一切,我只使用填充dp單位。適合所有屏幕的設計Android應用程序

我該如何解決這個問題?我是否應該將所有'包裝內容'替換爲所有高度的特定值?

我的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:background="@drawable/gradient" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="35dp" 
     android:text="Title1" 
     android:id="@+id/textView" 
     android:textColor="#fff" 
     android:layout_gravity="center_horizontal" 
     android:textSize="30dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="5dp" 
     android:textColor="#fff" 
     android:text="Title2" 
     android:id="@+id/textView3" 
     android:textSize="15dp" 
     android:layout_gravity="center_horizontal" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:paddingTop="15dp" 
     android:paddingLeft="100dp" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/first" 
      android:layout_marginRight="15dp" 
      android:id="@+id/imageView" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_marginRight="17dp" 
      android:background="@drawable/second" 
      android:id="@+id/imageView2" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/third" 
      android:id="@+id/imageView3" /> 
    </LinearLayout> 

    <Button 
     android:layout_width="270dp" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/btnstyle" 
     android:layout_height="wrap_content" 
     android:text="button3" 
     android:gravity="left|center_vertical" 
     android:paddingLeft="65dp" 
     android:textColor="#fff" 
     android:id="@+id/button1" 
     android:layout_gravity="center_horizontal" /> 

    <Button 
     android:layout_width="270dp" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/btnstyle" 
     android:layout_height="wrap_content" 
     android:text="button4" 
     android:gravity="left|center_vertical" 
     android:paddingLeft="65dp" 
     android:textColor="#fff" 
     android:id="@+id/button2" 
     android:layout_gravity="center_horizontal" /> 

    <Button 
     android:layout_width="270dp" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/btnstyle" 
     android:layout_height="wrap_content" 
     android:text="button5" 
     android:gravity="left|center_vertical" 
     android:paddingLeft="65dp" 
     android:textColor="#fff" 
     android:id="@+id/button3" 
     android:layout_gravity="center_horizontal" /> 

    <Button 
     android:layout_width="270dp" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/btnstyle" 
     android:layout_height="wrap_content" 
     android:text="button6" 
     android:gravity="left|center_vertical" 
     android:paddingLeft="65dp" 
     android:textColor="#fff" 
     android:id="@+id/button4" 
     android:layout_gravity="center_horizontal" /> 

    <Button 
     android:layout_width="270dp" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/btnstyle" 
     android:layout_height="wrap_content" 
     android:text="button7" 
     android:gravity="left|center_vertical" 
     android:paddingLeft="65dp" 
     android:textColor="#fff" 
     android:id="@+id/button5" 
     android:layout_gravity="center_horizontal" /> 

    <Button 
     android:layout_width="270dp" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/btnstyle" 
     android:layout_height="wrap_content" 
     android:text="button8" 
     android:gravity="left|center_vertical" 
     android:paddingLeft="65dp" 
     android:alpha="0.7" 
     android:textColor="#fff" 
     android:id="@+id/button6" 
     android:layout_gravity="center_horizontal" /> 

</LinearLayout> 
+0

如果你可以發佈佈局,有人可能會幫助你,直到那麼請試試這個,http://stackoverflow.com/questions/29025843/android-devices-with-different-height-takes-same-layout-folder/29026085 #29026085 –

+0

@PankajNimgade發佈了代碼。填充是問題,但我不知道如何設置它而不使用特定的度量單位。 –

+0

我已經發布了一個答案,我想這會幫助你 –

回答

1

好,我也做了一些改變,

雖然我真的不明白哪個視圖應該做的事情在你的佈局。所以我做了這種佈局以管理多屏幕支持的空間,但是您應該考慮根據您要定位的屏幕製作不同的佈局。

親切試試這個

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffffff" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.20" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/textView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:paddingTop="35dp" 
      android:text="Title1" 
      android:textColor="#000" 
      android:textSize="30dp" /> 

     <TextView 
      android:id="@+id/textView3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:paddingTop="5dp" 
      android:text="Title2" 
      android:textColor="#000" 
      android:textSize="15dp" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.10" 
     android:orientation="vertical"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:paddingLeft="100dp" 
      android:paddingTop="15dp"> 

      <ImageView 
       android:id="@+id/imageView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="15dp" 
       android:background="@android:color/holo_purple" /> 

      <ImageView 
       android:id="@+id/imageView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:layout_marginRight="17dp" 
       android:background="@android:color/holo_purple" /> 

      <ImageView 
       android:id="@+id/imageView3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@android:color/holo_purple" /> 
     </LinearLayout> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.75" 
     android:orientation="vertical"> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="270dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_gravity="center_horizontal" 
      android:layout_margin="10dp" 
      android:background="@android:color/holo_purple" 
      android:gravity="left|center_vertical" 
      android:paddingLeft="65dp" 
      android:text="button3" 
      android:textColor="#fff" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="270dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_gravity="center_horizontal" 
      android:layout_margin="10dp" 
      android:background="@android:color/holo_purple" 
      android:gravity="left|center_vertical" 
      android:paddingLeft="65dp" 
      android:text="button4" 
      android:textColor="#fff" /> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="270dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_gravity="center_horizontal" 
      android:layout_margin="10dp" 
      android:background="@android:color/holo_purple" 
      android:gravity="left|center_vertical" 
      android:paddingLeft="65dp" 
      android:text="button5" 
      android:textColor="#fff" /> 

     <Button 
      android:id="@+id/button4" 
      android:layout_width="270dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_gravity="center_horizontal" 
      android:layout_margin="10dp" 
      android:background="@android:color/holo_purple" 
      android:gravity="left|center_vertical" 
      android:paddingLeft="65dp" 
      android:text="button6" 
      android:textColor="#fff" /> 

     <Button 
      android:id="@+id/button5" 
      android:layout_width="270dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_gravity="center_horizontal" 
      android:layout_margin="10dp" 
      android:background="@android:color/holo_purple" 
      android:gravity="left|center_vertical" 
      android:paddingLeft="65dp" 
      android:text="button7" 
      android:textColor="#fff" /> 

     <Button 
      android:id="@+id/button6" 
      android:layout_width="270dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_gravity="center_horizontal" 
      android:layout_margin="10dp" 
      android:alpha="0.7" 
      android:background="@android:color/holo_purple" 
      android:gravity="left|center_vertical" 
      android:paddingLeft="65dp" 
      android:text="button8" 
      android:textColor="#fff" /> 

    </LinearLayout> 


</LinearLayout> 

輸出

output

更新

事情WHI您可以通過使用layout_weight來使layout_weight橫向分佈Views平衡,在給出的示例中,我將顯示兩個Buttons水平放置空間。注意它的widthlayout_weight

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

    <Button 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_margin="4dp" 
     android:layout_weight="0.5" 
     android:text="One" 
     android:textAllCaps="false" /> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_margin="4dp" 
     android:layout_weight="0.5" 
     android:text="Two" 
     android:textAllCaps="false" /> 

</LinearLayout> 

enter image description here

如果你希望兩個Views採取平等的空間,垂直您可以用下面的例子中,使parent layout有方向垂直和view's高度0dp

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

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.5" 
     android:src="@drawable/goku" /> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.5" 
     android:src="@drawable/gohan" /> 

</LinearLayout> 

enter image description here

+0

我怎樣才能去設置寬度相同的方式? –

+0

@BogdanDaniel,你可以在使用layout_weight的同時製作width =「0dp」,這樣你的視圖寬度將由layout_weight提供的百分比來管理,erst將會被android框架所關注:) –

+0

但是我應該製作一個新的線性佈局爲了那個原因 ?因爲我已經有了它的身高在 –

0

您應該使用佈局權重。

docs

佈局重量

的LinearLayout還支持個別孩子 了Android分配權重:layout_weight屬性。此屬性根據屏幕上應占用多少空間的方式爲視圖分配一個「重要性」值 。較大的權值允許它擴大到 填充父視圖中的任何剩餘空間。子視圖可以指定 體重值,然後視圖組中剩餘的空間爲 ,這些空間按其聲明體重的比例分配給子女。 默認重量爲零。

例如,如果有三個文本字段,其中兩個,聲明 權重爲1,而其他沒有給出重量,第三個文本框 沒有體重不會增加,只會佔據所要求的面積其內容爲 。在測量完所有三個場之後,另外兩個將平均擴大以填充餘下的空間 。如果第三個字段是 ,那麼給出的權重爲2(而不是0),那麼它現在宣佈更多 比其他兩個都重要,因此它佔總餘下 空間的一半,而前兩個分區平分。