9

我正在建設應用程序(計算器)。我使用內部按鈕的表格佈局。它在三星Galaxy II的屏幕上看起來很完美,但在大屏幕上看起來非常糟糕。按鈕高度非常小。我如何在更大的屏幕上伸展按鈕?Android響應式佈局

佈局XML是波紋管:

<ScrollView xmlns:android="http://schemas.an 
    xmlns:tools="http://schemas.android.com/ 
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:gravity="right"     
    android:paddingBottom="@dimen/activity_v 
    android:paddingLeft="@dimen/activity_hor 
    android:paddingRight="@dimen/activity_ho 
    android:paddingTop="@dimen/activity_vert 
    tools:context=".MainActivity" >   


<TableLayout         
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:gravity="right"     
    >          



    <TableRow        
     android:id="@+id/tableRow1"   
     android:layout_width="match_parent" 
     android:layout_height="0dp">   

     <Button        
      android:id="@+id/Button01"  
      android:layout_width="0dp"  
      android:layout_weight="0.33"  
      android:layout_height="fill_pare 
      android:text="@string/button_1" 
      android:visibility="visible" /> 

     <Button        
      android:id="@+id/Button02"  
      android:layout_width="0dp"  
      android:layout_weight="0.34"  
      android:layout_height="fill_pare 
      android:text="@string/button_2" 

     <Button        
      android:id="@+id/Button03"  
      android:layout_width="0dp"  
      android:layout_weight="0.33"  
      android:layout_height="fill_pare 
      android:text="@string/button_3" 

    </TableRow>        

    <TableRow        
     android:id="@+id/tableRow2"   
     android:layout_width="match_parent" 
     android:layout_height="0dp" >  

    <Button         
     android:id="@+id/Button04"   
     android:layout_width="0dp"   
      android:layout_weight="0.33"  
     android:layout_height="fill_parent" 
     android:text="@string/button_4" /> 

    <Button         
     android:id="@+id/Button05"   
     android:layout_width="0dp"   
     android:layout_weight="0.34"   
     android:layout_height="fill_parent" 
     android:text="@string/button_5" /> 

    <Button         
     android:id="@+id/Button06"   
     android:layout_width="0dp"   
     android:layout_weight="0.33"   
     android:layout_height="fill_parent" 
     android:text="@string/button_6" /> 

    </TableRow>        

    <TableRow        
     android:id="@+id/tableRow3"   
     android:layout_width="match_parent" 
     android:layout_height="0dp" >  

     <Button        
      android:id="@+id/Button07"  
      android:layout_width="0dp"  
      android:layout_weight="0.33"  
      android:layout_height="fill_pare 
      android:text="@string/button_7" 

     <Button        
      android:id="@+id/Button08"  
      android:layout_width="0dp"  
      android:layout_weight="0.34"  
      android:layout_height="fill_pare 
      android:text="@string/button_8" 

     <Button        
      android:id="@+id/Button09"  
      android:layout_width="0dp"  
      android:layout_weight="0.33"  
      android:layout_height="fill_pare 
      android:text="@string/button_9" 

    </TableRow>        

    <TableRow        
     android:id="@+id/tableRow4"   
     android:layout_width="match_parent" 
     android:layout_height="0dp" >  

     <Button        
      android:id="@+id/ButtonUndo"  
      android:layout_width="0dp"  
      android:layout_weight="0.33"  
      android:layout_height="fill_pare 
      android:text="@string/button_und 

     <Button        
      android:id="@+id/Button00"  
      android:layout_width="0dp"  
      android:layout_weight="0.34"  
      android:layout_height="fill_pare 
      android:text="@string/button_0" 

     <Button        
      android:id="@+id/ButtonCheck" 
      android:layout_width="0dp"  
      android:layout_weight="0.33"  
      android:layout_height="fill_pare 
      android:text="@string/button_che 

    </TableRow>        

    <TableRow        
     android:id="@+id/ResTable"   
     android:layout_width="match_parent" 
     android:layout_height="0dp" >  

     <TableLayout       
      android:layout_weight="0.3"  
      android:id="@+id/table_score_cor 

      <TableRow       
       android:id="@+id/tableRow5_11" 
       android:layout_width="wrap_conte 
       android:layout_height="fill_pare 
       android:gravity="center_vertical 
        <TextView      
        android:id="@+id/labelCorrec 
        android:layout_width="wrap_c 
        android:layout_height="fill_ 
        android:ems="4"    
        android:text="@string/correc 
        android:gravity="center_vertic 
        android:textSize="15sp" />  
       </TableRow>     

      <TableRow       
       android:id="@+id/tableRow5_12" 
       android:layout_width="wrap_conte 
       android:layout_height="0dp" > 

       <TextView      
        android:id="@+id/scoreCorr 
        android:layout_width="0dp" 
        android:layout_height="fil 
        android:ems="4"   
        android:gravity="center_ve 
        android:text=""   
        android:textSize="30sp" 
        android:textStyle="bold"/
      </TableRow>      
     </TableLayout>      

     <ImageView        
      android:id="@+id/imageView1"  
      android:layout_width="wrap_content 
      android:layout_height="fill_parent 
      android:layout_weight="0.3"  
      android:contentDescription="@strin 
      android:fitsSystemWindows="true" 
      android:scaleType="fitCenter"  
      android:src="@drawable/trees" /> 

     <TableLayout       
      android:id="@+id/table_score_inc 
      android:layout_weight="0.3">  

      <TableRow      
       android:id="@+id/tableRow5_21" 
       android:layout_width="wrap_conte 
       android:layout_height="fill_pare 
       android:gravity="center_vertical 
       <TextView      
        android:id="@+id/labelIncorrec 
        android:layout_width="wrap_con 
        android:layout_height="fill_pa 
        android:ems="4"    
        android:text="@string/incorrec 
        android:gravity="center_vertic 
        android:textSize="15sp" />  
      </TableRow>      
      <TableRow       
       android:id="@+id/tableRow5_22" 
       android:layout_width="wrap_conte 
       android:layout_height="fill_pare 

       <TextView      
        android:id="@+id/scoreInco 
        android:layout_width="0dp" 
        android:layout_height="fil 
        android:ems="4"   
        android:gravity="center_ve 
        android:text=""   
        android:textSize="30sp" 
        android:textStyle="bold"/
      </TableRow>      
     </TableLayout>       

     </TableRow>       

     <TableRow        
      android:id="@+id/tableRow_menu" 
      android:layout_width="wrap_content 
      android:layout_height="fill_parent 
      <Button        
       android:id="@+id/ButtonPlus"  
       android:layout_width="0dp"  
       android:layout_height="38dp" 
       android:layout_weight="0.25" 
       android:text="@string/action_p 
      <Button        
       android:id="@+id/ButtonMinus" 
       android:layout_width="0dp"  
       android:layout_height="38dp" 
       android:layout_weight="0.25" 
       android:text="@string/action_m 
      <Button        
       android:id="@+id/ButtonMult"  
       android:layout_width="0dp"  
       android:layout_height="38dp" 
       android:layout_weight="0.25" 
       android:text="@string/action_m 
         <Button      
       android:id="@+id/ButtonDivide" 
       android:layout_width="0dp"  
       android:layout_height="38dp" 
       android:layout_weight="0.25" 
       android:text="@string/action_d 
      </TableRow>       

      </TableLayout>      

</ScrollView>        
+0

你應該閱讀此鏈接:http://developer.android.com/guide/practices /screens_support.html – Luc

回答

8

在和所有的,你需要支持所有的屏幕創建不同的佈局/繪項目。這取決於你的要求,比如說,如果你想在小屏幕上包含2個按鈕,在大屏幕上包含4個按鈕,那麼顯然你必須創建不同的佈局。

如果你想要在所有屏幕上顯示相同數量的按鈕,那麼我建議你準備不同的圖像/繪圖集並將它們包括在您的項目中。在這裏,除了將圖像放入特定的可繪製文件夾之外,您無需執行任何操作。

還有一件事,如果它是一個普通的背景,那麼你可以創建9-patch圖片,以便它可以隨意擴展,或者你的設備支持任意大小。

更多的研究:

  1. http://developer.android.com/guide/practices/screens_support.html
  2. Supporting Different Screen Sizes
  3. Supporting Different Densities
  4. Implementing Adaptative UI Flows