LinearLayout中的RelativeLayout将无法正确包装内容

时间:2013-08-13 17:05:50

标签: android xml imageview android-linearlayout relativelayout

我正在尝试制作一个简单的时钟/秒表应用程序。在我的整体垂直线性布局中,我有一个相对布局,后跟一个按钮。相对布局有几个相互堆叠的图像视图,以产生时钟。

然而,我注意到,相对布局以及图像视图本身在线性布局中占用了太多空间。时钟片是SQUARE,为什么Eclipse坚持认为它是一个长的垂直矩形?如果我不使用重量,我的按钮在底部甚至不显示。 (但奇怪的是,它显示它是否高于相对布局。)

我已尽力而为:将相对布局中项目的高度设置为wrap_content,以及相对布局本身。我尝试使用权重,给予relativelayout权重为0和按钮1,然后根据需要将layout_heights分别设置为0dp。仍然没有去。其他东西还有很多空间,我希望时钟的父布局能够将内容包裹起来。

这里发生了什么?有关详情,请参阅附图。代码如下。

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

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="ContentDescription" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/clock" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/hour" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/min" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/sec" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/bell" />
</RelativeLayout>

<Button
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_gravity="center_horizontal"
    android:layout_weight="1"
    android:text="Test" />

How it looks vertically How it looks horizontally How I want the layout to wrap itself.

2 个答案:

答案 0 :(得分:2)

事实证明,我只需要添加:

android:adjustViewBounds="true"

到每个ImageView!现在,时钟片的边界被“包裹”在内容周围,即使在其布局中设置wrap_content不起作用。谢谢你的建议!

答案 1 :(得分:1)

尝试使用RelativeLayout作为主要布局。这样您就可以在屏幕底部显示按钮。然后,如果需要,可以在主布局中为时钟片使用单独的布局

有点像这样

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="ContentDescription" >

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/clock" />

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/hour" />

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/min" />

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/sec" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/bell" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:text="Button" />