layout_gravity无法正常工作

Eug*_*ene 7 layout android layout-gravity

为什么我TextView不对劲?

更新:好吧,现在我不需要设置TextView为正确.现在非常有趣的是为什么layout_gravity不按预期工作,即 - 设置View到父容器内的位置.

在此输入图像描述

<?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:minHeight="?android:attr/listPreferredItemHeight"
              style="@style/activated_item"
              android:orientation="horizontal">

    <CheckBox
        android:id="@+id/star"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="8dp"
        style="?android:attr/starStyle"/>

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_marginLeft="8dp"
        android:layout_gravity="right" //////// HERE I AM 
        android:textStyle="bold"
        android:textColor="@color/item_text_color"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

poi*_*oae 16

尝试使用gravity而不是layout_gravity.

  • 真正.但是(!)不是布局内部组件的重力,也不是View本身的layout_gravity?这就是我困惑的原因. (5认同)
  • @siik是的,这是正确的!TextView的宽度与其父级(您指定的宽度)相匹配,因此设置`layout_gravity`没有意义。将android:background设置为随机颜色,以查看您的TextView实际大小。或者,将android:layout_width设置为wrap_content,然后将其与layout_gravity一起使用。 (2认同)

dpe*_*uha 7

我找到了两个解决方案:

  1. android:orientation="vertical"
  2. 使用FrameLayout而不是LinearLayout作为文本/复选框小部件的父级。这不是主要用法FrameLayout,但 Android 文档中也提到了该建议:

    ...但是,您可以将多个子项添加到 FrameLayout 并通过使用 android:layout_gravity 属性为每个子项分配重力来控制它们在 FrameLayout 中的位置。


Sam*_*hen 6

因为您设置orientation为水平,这意味着您无法手动更改子视图的水平位置。