我如何使RelativeLayout适合屏幕?

时间:2013-04-17 07:32:39

标签: android xml android-layout relativelayout

我正面临RelativeLayout屏幕外的问题按钮显示。 ImageView不会缩放图片以显示按钮可见的位置。

我有什么:

enter image description here

我想要的是什么:

enter image description here

代码:

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

<TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/str"
        android:textAppearance="@android:style/TextAppearance.Small"
        android:textColor="?android:attr/textColorTertiary"
        android:layout_centerHorizontal="true"
        />

<ru.mw.widget.DrawableImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:adjustViewBounds="true"
        android:layout_centerHorizontal="true"
        android:scaleType="centerCrop"
        />

<Button
        android:id="@+id/processButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/str"
        android:layout_below="@+id/imageView"
        android:layout_centerHorizontal="true"
        />

更改屏幕方向时出现问题: 如果我在横向模式下使用Arun C Thomas's method一切正常,但在纵向模式下,我有这个(图像被左/右边缘裁剪):

enter image description here 预期结果:

enter image description here

3 个答案:

答案 0 :(得分:2)

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

<TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/str"
        android:textColor="?android:attr/textColorTertiary"
        android:textAppearance="@android:style/TextAppearance.Small"

        android:layout_centerHorizontal="true"
        />

<ru.mw.widget.DrawableImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_below="@+id/textView"
    android:layout_centerHorizontal="true"
    android:adjustViewBounds="true"
    android:scaleType="centerCrop"
    android:layout_above="@+id/processButton"
     />

<Button
        android:id="@+id/processButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/str"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        />
</RelativeLayout>

这是解决方案

现在要实现更新要求,请将上述布局添加到layout-land中的res文件夹中(如果您没有创建名为layout-land的文件夹在res)现在在默认layout文件夹中添加此xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:gravity="center"  >
<ru.mw.widget.DrawableImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:adjustViewBounds="true"
     />

<Button
    android:id="@+id/processButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/imageView"
    android:layout_centerHorizontal="true"
    android:text="@string/str" />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/imageView"
    android:layout_centerHorizontal="true"
    android:text="@string/str"
    android:textColor="?android:attr/textColorTertiary" />

</RelativeLayout>

多数民众赞成。

答案 1 :(得分:1)

尝试将android:layout_alignParentBottom="true"添加到按钮:

<Button
    android:id="@+id/processButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/str"
    android:layout_below="@+id/imageView"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    />

答案 2 :(得分:1)

  1. 使用按钮将按钮对齐父母底部 layout_alignParentBottom="true"
  2. ImageViewTextView
  3. 之间包裹Button
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:gravity="center_vertical"  >
    
    <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/str"
            android:textAppearance="@android:style/TextAppearance.Small"
            android:textColor="?android:attr/textColorTertiary"
            android:layout_centerHorizontal="true"
            />
    
    <Button
            android:id="@+id/processButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/str"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            />
    
    <ru.mw.widget.DrawableImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView"
            android:layout_above="@+id/processButton"
            android:adjustViewBounds="true"
            android:layout_centerHorizontal="true"
            android:scaleType="centerCrop"
            />
    
    </RelativeLayout>