【问题标题】:Android Linear Layout MisalignmentAndroid 线性布局错位
【发布时间】:2017-09-27 09:52:30
【问题描述】:

我正在尝试使用线性布局创建一个简单的布局,其中包含连续四个元素,固定高度为 30dp。元素是一个 TextView、一个 Button、另一个 TextView 和另一个 Button。然而,第二个 textview 元素没有对齐,就像它的 marginTop 属性集是一对 dp。

我尝试将边距强制为零,但无济于事。你能帮帮我吗?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/x"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:id="@+id/aod_division_name"
        android:layout_width="80dp"
        android:layout_height="30dp"
        android:layout_marginStart="5dp"
        android:gravity="center|start"
        android:text="@string/add"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/aod_division_minusDivisionTotalButton"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:padding="0dp"
        android:text="@string/minus" />

    <TextView
        android:id="@+id/aod_division_totalValue"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/aod_division_plusDivisionTotalButton"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:gravity="center"
        android:padding="0dp"
        android:text="@string/plus" />

</LinearLayout>

Screenshot of the layout

【问题讨论】:

    标签: android android-layout alignment android-linearlayout


    【解决方案1】:

    只需将此属性android:gravity="center" 添加到您的第二个文本视图。

    如果您仍然遇到问题,请尝试在 RelativeLayout 中添加 TextView 和按钮,并且您可以使用 android:layout_toRightOf 属性将其完美对齐。像这样的

    <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
    
            <Button
                android:id="@+id/aod_division_minusDivisionTotalButton"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:text="-" />
    
            <TextView
                android:id="@+id/aod_division_totalValue"
                android:layout_toRightOf="@+id/aod_division_minusDivisionTotalButton"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceMedium" />
    
            <Button
                android:id="@+id/aod_division_plusDivisionTotalButton"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_toRightOf="@+id/aod_division_totalValue"
                android:gravity="center"
                android:padding="0dp"
                android:text="+" />
    
        </RelativeLayout>
    

    上面的用户界面是这样的

    【讨论】:

    • 谢谢。我会测试这个!
    • 没问题! @JoaoNeto
    【解决方案2】:

    试试这个

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/x"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
    
        <TextView
            android:id="@+id/aod_division_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="5dp"
            android:gravity="center"
            android:text="Add"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    
        <Button
            android:id="@+id/aod_division_minusDivisionTotalButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Minus" />
    
        <TextView
            android:id="@+id/aod_division_totalValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="asaas"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    
        <Button
            android:id="@+id/aod_division_plusDivisionTotalButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Plus" />
    
    </LinearLayout>
    

    【讨论】:

    • 我以为我写了评论。我给了你一个downvote,因为你没有解释你的解决方案也没有我的问题......我会删除它,但请用解释编辑你的答案,否则我不会理解这个问题......编辑:其实我不是那个不赞成你的人......