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