代码之家  ›  专栏  ›  技术社区  ›  Ksenia

重力没有按预期工作-只是部分工作

  •  0
  • Ksenia  · 技术社区  · 6 年前

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" 
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="start"
                    android:text="@string/title_day"
                    android:textStyle="bold"
                    android:textSize="20sp" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="start"
                    android:text="Tuesday"
                    android:textSize="16sp" />
    
            </LinearLayout>
    
            <TextView
                android:id="@+id/tv_fail"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="+22"
                android:textSize="16sp"
                android:layout_gravity="end|center_vertical" />
    
        </LinearLayout>
    
    </LinearLayout>
    

    这个看起来像这样:

    enter image description here

    tv_fail 固定在屏幕的右端。我想是的

    android:layout_gravity="end|center_vertical"
    

    应该处理它,但此指令垂直居中于TextView,但不会将其移动到末尾。如何修复?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Community CDub    4 年前

    我想是的

    android:layout_gravity="end|center_vertical"
    

    应该处理它,但此指令垂直居中于TextView,但不会将其移动到末尾。

    这是因为 LinearLayout 工作;你对 layout_gravity 通常是正确的。

    LinearLayout将其子对象放在一条线上,子对象将全部打包到LinearLayout的“开始”处。换句话说,水平线性布局将忽略 孩子的属性。

    layout_weight ),然后让TextView将其文本放置在其内容区域的末尾(使用 gravity ).

    <TextView
        android:id="@+id/tv_fail"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="+22"
        android:textSize="16sp"
        android:layout_gravity="center_vertical"
        android:gravity="end"/>
    
        2
  •  1
  •   Jeel Vankhede    6 年前

    text 在你的最后一个房间里 TextView 为此,应使用:

    android:gravity="end"
    

    对于 文本框 重力使用:

    android:layout_gravity="center"
    

    android:gravity & android:layout_gravity 第一种方法是在给定重力的情况下排列视图内部的内容,而第二种方法是根据给定重力排列视图。


    更新代码:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="start"
                android:text="title_day"
                android:textSize="20sp"
                android:textStyle="bold" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="start"
                android:text="Tuesday"
                android:textSize="16sp" />
    
        </LinearLayout>
    
        <TextView
            android:id="@+id/tv_fail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="+22"
            android:textSize="16sp" />
    
    </LinearLayout>