【问题标题】:How to align textView on layout center without conflict with other view?如何在布局中心对齐 textView 而不会与其他视图冲突?
【发布时间】:2016-07-16 18:34:05
【问题描述】:

我在尝试将 textView 对齐到布局中心时遇到问题:当我尝试这样做时 - 它与左侧的按钮发生冲突 - 如果文本太长 - 它会被隐藏按钮下。文本长度可能非常不同,我需要它位于布局的中心,而不是按钮下方/上。

这里是activity布局的xml文件:

<?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="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/item_content_action_bar_layout"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:background="@color/colorBlue"
        android:padding="10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/item_content_title"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Title"
            android:textColor="@color/colorWhite"
            android:textAlignment="center"
            android:singleLine="true"
            android:layout_gravity="center_vertical"
            android:textStyle="bold"
            android:autoText="false"
            android:layout_centerInParent="true"
            android:layout_alignWithParentIfMissing="false"
            android:layout_alignParentRight="false" />

        <ImageButton
            android:layout_width="120dp"
            android:layout_height="45dp"
            android:id="@+id/item_content_back_button"
            android:background="@drawable/back_button_selector"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginRight="5dp" />

    </RelativeLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/item_content_scroll_view"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:fillViewport="true">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                >

                <ImageView
                    android:layout_width="125dp"
                    android:layout_height="125dp"
                    android:id="@+id/item_content_image"
                    android:src="@drawable/ic_no_thumbnail"
                    android:maxHeight="125dp"
                    android:maxWidth="125dp"
                    android:layout_alignParentLeft="false"
                    android:layout_alignParentStart="true"
                    android:layout_margin="10dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/item_content_subtitle"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="Subtitle"
                    android:layout_alignTop="@+id/item_content_image"
                    android:layout_toRightOf="@+id/item_content_image"
                    android:layout_toEndOf="@+id/item_content_image"
                    android:textSize="20dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/item_content_pubdate"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="Date"
                    android:layout_below="@+id/item_content_subtitle"
                    android:layout_alignLeft="@+id/item_content_subtitle"
                    android:layout_alignStart="@+id/item_content_subtitle"
                    android:textSize="10dp"
                    android:layout_marginTop="10dp" />

            </RelativeLayout>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/item_content_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="blabla"
                android:layout_below="@+id/item_content_pubdate"
                android:layout_alignStart="@+id/item_content_pubdate"
                android:layout_alignParentStart="true"
                android:layout_margin="10dp" />

        </LinearLayout>
    </ScrollView>

</LinearLayout>

【问题讨论】:

  • 您的 xml 包含错误

标签: android xml android-layout android-studio android-linearlayout


【解决方案1】:

尝试使用 LinearLayout 和 layout-weight 来避免冲突。将您的第一个相对布局更改为低于一个

<LinearLayout
        android:id="@+id/item_content_action_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/_white"
        android:orientation="horizontal"
        android:padding="10dp"
        android:weightSum="7">

        <ImageButton
            android:id="@+id/item_content_back_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:layout_weight="2"
            android:background="@drawable/chemist" />

        <TextView
            android:id="@+id/item_content_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="5"
            android:autoText="false"
            android:gravity="center"
            android:maxLines="2"
            android:singleLine="true"
            android:text="Title"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/Black"
            android:textStyle="bold" />

    </LinearLayout>

【讨论】:

  • 如果有问题请告诉我。@Igor Dotsenko
【解决方案2】:

将您的RelativeLayout 更改为LinearLayout 并使用布局的android:layout_weight 属性来执行此操作。

<LinearLayout

           android:id="@+id/item_content_action_bar_layout"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:background="@color/_white"
           android:orientation="horizontal"
           android:padding="10dp"
           android:weightSum="1"           
            >

            <ImageButton

            android:id="@+id/item_content_back_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"            
            android:background="@drawable/chemist" />


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/item_content_title"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Title"
                android:textColor="@color/colorWhite"
                android:textAlignment="center"
                android:singleLine="true"
                android:layout_gravity="center_vertical"
                android:textStyle="bold"
                android:gravity="center"
                android:layout_weight="1"
                android:autoText="false"/>
    </LinearLayout>

【讨论】:

    【解决方案3】:

    将 textview item_content_title 的 layout_gravity 设为“center_horizo​​ntal”。

    并在 ImageButton item_content_back_button 下添加android:layout_toLeftOf="@+id/item_content_title"

    希望这是你想要的。

    【讨论】:

      【解决方案4】:

      您的操作栏布局必须是这样的-

        <RelativeLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:id="@+id/item_content_action_bar_layout"
              android:layout_alignParentTop="true"
              android:layout_alignParentLeft="true"
              android:layout_alignParentStart="true"
              android:background="@color/colorBlue"
              android:padding="10dp">
              <ImageButton
                  android:layout_width="120dp"
                  android:layout_height="45dp"
                  android:id="@+id/item_content_back_button"
                  android:background="@drawable/back_button_selector"
                  android:layout_centerVertical="true"
                  android:layout_alignParentLeft="true"
                  android:layout_marginRight="5dp" />
             <TextView
                  android:toRightOf="@id/item_content_back_button"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:id="@+id/item_content_title"
                  android:textAppearance="?android:attr/textAppearanceMedium"
                  android:text="Title"
                  android:textColor="@color/colorWhite"
                  android:textAlignment="center"
                  android:singleLine="true"
                  android:layout_gravity="center_vertical"
                  android:textStyle="bold"
                  android:autoText="false"
                  android:layout_centerInParent="true" />
          </RelativeLayout>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多