1

我已经使用 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>

输出看起来像这样。

在此处输入图像描述

我想要这样的东西。(注意 imageview 占屏幕高度的 40%)

在此处输入图像描述

4

4 回答 4

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>
于 2013-04-24T08:03:11.143 回答
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>
于 2013-04-24T08:23:33.743 回答
0

您的 RelativeLayout 没有做任何特别的事情,因此将其更改为 LinearLayout(将宽度和高度属性都保留为“match_parent”,但添加

android:orientation="vertical"

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

android:layout_weight=".xx"

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

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

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

于 2013-04-24T08:00:18.180 回答
0

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

于 2013-04-24T08:01:19.230 回答