【问题标题】:Float right android向右浮动 android
【发布时间】:2015-10-29 07:29:48
【问题描述】:

无法使线性布局中的视图向右浮动。下面是我的代码。如果 layout_gravity 在其父视图中对齐视图,则第三个视图(下面代码中的第二个 ImageView)应该在右侧,但情况并非如此。如何解决这个问题?

<LinearLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#456abc"
android:gravity="center"
android:orientation="horizontal">

<ImageView
    android:id="@+id/left"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/arrow_down" />

<TextView
    android:id="@+id/info"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="ABDEF" />

<ImageView
    android:id="@+id/right"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:src="@mipmap/arrow_right" />
</LinearLayout>

【问题讨论】:

  • 你能发一张你想要的图片吗?
  • @DroidAks imgur.com/a/OXOkN 无法添加图片

标签: android android-layout android-linearlayout android-view


【解决方案1】:

我建议使用RelativeLayout:

左图:

android:layout_alignParentLeft="true"

文本视图信息:

android:layout_centerHorizontal="true"

图像视图右:

android:layout_alignParentRight="true"

layout.xml:

<?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="wrap_content"
    android:background="#456abc" >

    <ImageView
        android:id="@+id/left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="ABDEF" />

    <ImageView
        android:id="@+id/right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

【讨论】:

  • 它不是关于你是否有第四个元素。提供的图片链接清楚地表明只有 3 个组件,并且应该对称地间隔和排列。
  • 我只是想解释线性布局是如何工作的,以及为什么重力不同于浮动。相对布局部分解决了这个问题。
  • @LaurensKoppenol:texview 仍然在左边。我该如何解决?
  • 我认为你的 textalign 中的文本只是左对齐。尝试在您的文本视图上设置android:gravity="left"
  • 我会添加完整的xml
【解决方案2】:

查看下面的 xml 布局。

   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="#456abc"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/arrow_down" />

        <TextView
            android:id="@+id/info"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="ABDEF" />
        <ImageView
            android:id="@+id/right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             android:src="@mipmap/arrow_right" />
   </LinearLayout>

结果:

【讨论】:

  • 这确实产生了输出。如果您可以解释如何在没有这种“黑客”的情况下正确对齐视图,那就太好了。不限于LinearLayout,
  • 这不是黑客攻击。 android:layout_weight 是在 LinearLayout 中获取此类视图的唯一方法。或者,您可以使用 RelativeLayout。
【解决方案3】:
<?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="?attr/actionBarSize"
android:background="#456abc"
android:gravity="center"
android:orientation="horizontal">

<ImageView
android:id="@+id/left"
android:layout_width="0dip"
android:layout_weight="0.3"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/info"
android:layout_width="0dip"
android:layout_weight="0.4"
android:gravity="center"
android:layout_height="wrap_content"
android:text="ABDEF" />

<ImageView
android:id="@+id/right"
android:layout_width="0dip"
android:layout_weight="0.3"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_launcher" />
</LinearLayout>

试试这个。添加了ic_launcher图片,你可以添加自己的图片。

【讨论】:

  • 这不会使图像向右浮动。它会拉伸所有元素以适应整行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2012-12-07
  • 1970-01-01
  • 2014-04-17
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多