在Android中正确包装图像

时间:2014-05-15 09:51:54

标签: android dynamic imageview image-size

我想创建一个如下所示的布局:

-----------------
|               |
|               |
|               |
|               |
|   ImageView   |
|               |
|               |
|               |
|               |
-----------------
|Button |Button |

图像本身的大小可能不同,但我想在所有设备上用整个屏幕填充图像视图和它下面的两个按钮,而不管图像的大小。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

在RelativeLayout中:

将两个按钮放在LinearLayout中。

每个按钮都有android:layout_weight="1"android:layout_width="0dp"

LinearLayout必须与父母的底部对齐:android:layout_alignParentBottom="true"

然后使用以下属性添加ImageView:android:layout_alignParentTop="true"android:layout_width="match_parent"android:layout_height="match_parent"

请注意,match_parent会填充剩余空间

像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        >
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
        />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
        />
    </LinearLayout>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
    />
</RelativeLayout>

注意:此布局很轻,避免使用嵌套权重。

<强> [编辑]

这是一种替代设计,似乎最符合您新表达的需求

要在中心中设置图片,只需 下面的按钮:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
    />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/image"
        android:orientation="horizontal"
        >
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
        />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
        />
    </LinearLayout>
</RelativeLayout>

答案 1 :(得分:0)

只需使用,

android:scaleType="fitXY" 
ImageView的

属性。

对于按钮使用,

android:layout_weight="1" for both.

答案 2 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >

  <ImageView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" />


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
  </LinearLayout>

</LinearLayout>

这会将Button保留在屏幕底部,并将剩余空间留给ImageView

答案 3 :(得分:0)

试试这个,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="90"
        android:background="@android:color/darker_gray"
        android:scaleType="fitXY" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="Ok" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="Cancel" />
    </LinearLayout>

</LinearLayout>