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

时间:2013-04-24 07:53:27

标签: java android xml layout

我已经使用imageview和一些按钮进行了布局,我希望按钮具有可用屏幕宽度和高度的一半。

这是我试过的,我的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

4 个答案:

答案 0 :(得分:4)

这是您需要的代码,您只需更改视图的权重即可设置您希望视图采用的屏幕百分比:

<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>

答案 1 :(得分:1)

试试这个,注意:

  • 根据“提示”嵌套权重对性能不利,不过看一下代码,
  • 不推荐使用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>

答案 2 :(得分:0)

您的RelativeLayout没有做任何特别的事情,所以将其更改为LinearLayout(将width和height属性保留为&#34; match_parent&#34;但添加

android:orientation="vertical"

然后,对于每个较小的LinearLayouts,添加:

android:layout_weight=".xx"

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

这里的背景参考,请务必阅读:

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

答案 3 :(得分:0)

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