线性布局重力和放置项目

时间:2014-07-29 08:14:48

标签: android android-layout android-linearlayout layout-gravity

今天我正在进行布局工作,我有一个问题,基本的我认为。

我有一个线性布局和一个imageview。我想显示图像和布局的左侧或右侧

我试过了,layout_gravity 准确地说,我希望在线性而不是相对或其他方面做到这一点非常重要。

感谢提前,一个精确的问题的屏幕

http://hpics.li/fc67805

我与图像的线性

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

            <ImageView
                android:id="@+id/Reboot"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.3"
                android:layout_gravity="left"
                android:src="@drawable/arreter" />
</LinearLayout>

4 个答案:

答案 0 :(得分:1)

发生的事情是ImageView是&#34;匹配&#34;父LinearLayout的大小,因此无法将其与左侧或右侧对齐...在这种情况下它没有意义,因为视图无论如何都占用了整个空间。如果您确实想要将图像的效果可视化为其父级的左侧或右侧,则可以将layout_width的{​​{1}}和layout_height更改为{{1如下......

ImageView

另外,请注意我删除了wrap_content属性,因为它对 <ImageView android:id="@+id/Reboot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:src="@drawable/arreter" />

内的单个子视图也没用

答案 1 :(得分:0)

使用此布局将ImageView与右/左对齐

<?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="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/Reboot"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:layout_gravity="left"         // you can use right also. It works.
                android:src="@drawable/ic_launcher" />
</LinearLayout>

您的LinearLayout方向为horizontal,因此您可以使用top and bottom将子视图放在android:layout_gravity中。对于horizontal LinearLayout right and left不起作用,它们仅适用于vertical LinearLayout。希望这些信息有用:)

答案 2 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

左侧

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

        <ImageView
            android:id="@+id/Reboot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/ic_launcher" />
</LinearLayout>

到右侧

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right">

        <ImageView
            android:id="@+id/Reboot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/ic_launcher" />
</LinearLayout>

答案 3 :(得分:0)

这个问题可能已经得到解答,但万一其他人发现了这个

Layout_gravity和Gravity是不同的。 Layout_gravity会更改其ViewGroup中项目的位置,而andorid:gravity会更改项目内容的位置。

对这种差异进行了很好的讨论  here

现在,由于LinearLayout的宽度和ImageView的宽度都是match_parent,因此layout_gravity不会起作用,因为它们的大小已经相同。 您需要将LinearLayout的宽度保持在 match_parent ,并将ImageView的宽度更改为 wrap_content 。然后,你可以使用 android:layout_gravity =&#34;对&#34;或 android:layout_gravity =&#34; left&#34;向右或向左移动图像。

注意:这也适用于上/下移动图像。只需更改ViewGroup&和ImageView的高度而不是宽度,然后使用android:layout_gravity =&#34; top&#34;或者android:layout_gravity =&#34; bottom&#34;