Android按钮宽度的一半可用宽度 - 布局

问题描述:

我已经做了一个与imageview和一些按钮的布局,我希望按钮有一半的可用屏幕宽度和高度。Android按钮宽度的一半可用宽度 - 布局

这是我试过的,我的xml如下。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:id="@+id/imageidid" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:orientation="vertical" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="fill_parent" 
      android:layout_height="200dp" 
      android:scaleType="centerCrop" 
      android:src="@drawable/actionbar_bg" /> 

    </LinearLayout> 

    <LinearLayout 
    android:id="@+id/1st row" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_below="@id/imageid" 
    > 

    <Button 
    android:id="@+id/btn1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="row1 col1" /> 

    <Button 
    android:id="@+id/btn2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="row1 col2" /> 

    </LinearLayout> 


    <LinearLayout 
    android:id="@+id/2nd row" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_below="@id/1st row" 
    > 

    <Button 
    android:id="@+id/btn1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="row2 col1" /> 

    <Button 
    android:id="@+id/btn2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="row2 col2" /> 

    </LinearLayout> 


</RelativeLayout> 

和输出看起来像这样。

enter image description here

,我想是这样的。(注imageview的进行屏幕高度的40%)

enter image description here

+0

使用weightSum 1! – 2013-04-24 07:55:00

这里的weightsum属性是你的代码需要达到你想要的,你可以改变视图的权限来设置你希望视图的屏幕比例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="40" 
    android:scaleType="centerCrop" 
    android:src="@drawable/actionbar_bg" /> 

<LinearLayout 
    android:id="@+id/1st row" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_below="@id/imageid" 
    android:layout_weight="30" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/btn1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="row1 col1" /> 

    <Button 
     android:id="@+id/btn2" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="row1 col2" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/2nd row" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_below="@id/1st row" 
    android:layout_weight="30" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/btn1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="row2 col1" /> 

    <Button 
     android:id="@+id/btn2" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="row2 col2" /> 
</LinearLayout> 

</LinearLayout> 

你的RelativeLayout没有做什么特别的东西,所以它更改为LinearLayout(将宽度和高度属性都设置为“match_parent”,但添加

android:orientation="vertical" 

然后对于每个人小光伏LinearLayouts,添加:

android:layout_weight=".xx" 

其中xx是你希望你的孩子的布局使用大的LinearLayout的百分比。

此背景参考,请务必阅读:

http://developer.android.com/guide/topics/ui/layout/linear.html

可以使用的LinearLayout作为主要布局,然后使用线性布局

试试这个,指出:

  • 根据“暗示”嵌套的权重是坏的表现,不过看代码,
  • FILL_PARENT已过时,使用match_parent
  • 你的“形象”是不是代表视觉上的百分比,在任何情况下,很容易改变,

代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/imageid" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="4" 
     android:orientation="vertical" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:contentDescription="@string/description" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="centerCrop" 
      android:src="@drawable/actionbar_bg" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/1strow" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="3" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/btn11" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/row1col1" /> 

     <Button 
      android:id="@+id/btn21" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/row1col2" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/2ndrow" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="3" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/btn12" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/row2col1" /> 

     <Button 
      android:id="@+id/btn22" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/row2col2" /> 

    </LinearLayout> 
</LinearLayout>