2013-10-18 106 views
3

请看看下面的代码设置按钮的大小比例

<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:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".HomeScreen" > 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:stretchColumns="*" 
     android:layout_alignParentTop="true" > 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button5" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button6" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button7" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button8" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button9" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button10" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button11" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button12" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 
    </TableLayout> 

</RelativeLayout> 

这会产生以下结果。

enter image description here

但是这不是我所需要的。我需要这12个按钮来填充整个屏幕,保持相互之间相等的空间,并且尺寸也相同。我不需要设置一个固定大小的谎言hight = 100,宽度= 100,而应根据设备屏幕大小调整大小。这意味着,每个按钮在屏幕上可以有8.3%的空间(100/12 = 8.3)。

我试图通过将每个按钮的高度设置为0dp并添加android:layout_weight = 0.083。但是这不起作用,因为之后没有显示任何按钮。

我该怎么做?

回答

1

请尝试以下layout.I已经改变了一些权重值并取得按钮高度FILL_PARENT

<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:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".HomeScreen" > 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:stretchColumns="*" 
     android:weightSum="4" > 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button3" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:text="Button" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" > 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button5" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button6" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow3" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" > 

      <Button 
       android:id="@+id/button7" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button8" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button9" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow4" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" > 

      <Button 
       android:id="@+id/button10" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button11" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button12" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_weight=".3" 
       android:text="Button" /> 
     </TableRow> 
    </TableLayout> 

</RelativeLayout> 

这是工作在我的设备上。希望这也适用于你!

enter image description here

+0

嗨,是的。这工作。谢谢! –

5

你不能拥有你想要的XML中的动态布局..

在你的活动/片段在这里装载布局..你必须为自己设定取决于屏幕尺寸tablerow的高度

为了让屏幕大小,您可以使用

DisplayMetrics metrics = new DisplayMetrics(); 
    Activity aActivity = (Activity) container.getContext(); 
    aActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    screen_Width = metrics.widthPixels; 
    screen_Height = metrics.heightPixels; 

现在,您可以设置每个表行的宽度为totalHeight/NoOFRows - padding.

 tableRow.setMinimumHeight(calculatedHeight); 

类似的计算可以做的宽度,使他们正确地填写,并保持同样尺寸

+0

非常感谢您的回复。将来肯定会使用。谢谢! –