【问题标题】:Align button for right in the middle of TextView在 TextView 中间对齐按钮
【发布时间】:2019-12-10 07:05:37
【问题描述】:

我想像 WhatsApp 一样在 TextView 的中间对齐按钮。 Android Studio 的布局预览屏幕显示正确,但在手机上它没有对齐 TextView 的中间,对齐屏幕底部。

单独使用片段没有问题,但是当片段在活动中时,就会出现问题。我了解我的活动布局有误。

如何对齐发送按钮?

Whatsapp 按钮:

我在 Android Studio 预览中的按钮:

我在手机上的按钮:

我的片段布局:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBlue"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/userNames"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        android:ellipsize="end"
        android:gravity="start|center_vertical"
        android:maxLines="1"
        android:padding="10dp"
        android:scrollbars="horizontal"
        android:scrollHorizontally="true"
        android:text="Hello Nilu Pilu"
        android:textColor="@color/colorGreen" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        android:layout_marginBottom="10dp"
        android:contentDescription="@null"
        android:src="@drawable/ic_log_out" />

</RelativeLayout>

我的活动布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical">

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

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="@color/colorPrimary"
            android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            android:theme="@style/ThemeOverlay.AppCompat.Dark"
            app:tabMode="scrollable">

            <androidx.appcompat.widget.SearchView
                android:id="@+id/search_action"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:contentDescription="@null"
                android:iconifiedByDefault="false"
                android:tint="@color/white"
                app:defaultQueryHint="@string/searchForName"
                app:iconifiedByDefault="false"
                app:queryHint="@string/searchForName"
                app:srcCompat="@drawable/ic_search_24" />

        </androidx.appcompat.widget.Toolbar>

        <LinearLayout
            android:id="@+id/share_list_fragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            tools:ignore="MergeRootFrame" />
    </LinearLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

【问题讨论】:

  • 无法理解这个问题,我可以说 WhatsApp 所做的是一个 FAB 按钮,您可以根据 FAB 按钮大小设置 TextView 的填充,您可以将箭头图像放置在 TextView 的左侧.

标签: android android-layout textview android-xml android-button


【解决方案1】:

无需使用嵌套RelativeLayout,您只需使用单个RelativeLayout即可实现它

使用RelativeLayout试试这个

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBlue"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/userNames"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        android:ellipsize="end"
        android:gravity="start|center_vertical"
        android:maxLines="1"
        android:padding="10dp"
        android:scrollbars="horizontal"
        android:scrollHorizontally="true"
        android:text="Hello Nilu Pilu"
        android:textColor="@color/colorGreen" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        android:layout_marginBottom="10dp"
        android:contentDescription="@null"
        android:src="@drawable/ic_log_out" />

</RelativeLayout>

使用ConstraintLayout试试这个

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBlue"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/userNames"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        android:ellipsize="end"
        android:gravity="start|center_vertical"
        android:maxLines="1"
        android:padding="10dp"
        android:scrollbars="horizontal"
        android:scrollHorizontally="true"
        android:text="Hello Nilu Pilu"
        android:textColor="@color/colorGreen"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="10dp"
        android:contentDescription="@null"
        android:src="@drawable/ic_log_out"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

输出

【讨论】:

  • 单独使用片段没有问题,但是当片段在活动中时,就会出现问题。我了解我的活动布局错误。请帮帮我
【解决方案2】:

我建议使用ConstraintLayout 布局而不是RelativeLayout,这是您使用ConstraintLayout 的代码,它将完美运行。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/emptyListColor"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/bottomView"
        android:layout_height="0dp" />

    <RelativeLayout
        android:id="@+id/bottomView"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        android:padding="5dp">

        <TextView
            android:id="@+id/userNames"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start|center_vertical"
            android:ellipsize="end"
            android:gravity="start|center_vertical"
            android:maxLines="1"
            android:padding="5dp"
            android:scrollbars="horizontal"
            android:scrollHorizontally="true"
            android:textColor="@color/white" />

    </RelativeLayout>

    <ImageView
        android:id="@+id/button"
        android:layout_width="50dp"
        android:layout_height="50dp"
        app:layout_constraintTop_toTopOf="@+id/bottomView"
        app:layout_constraintBottom_toTopOf="@+id/bottomView"
        app:layout_constraintEnd_toEndOf="@+id/bottomView"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:background="@drawable/send_circle"
        android:contentDescription="@null"
        android:src="@drawable/attach_send2" />

</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

  • 单独使用片段没有问题,但是当片段在活动中时,就会出现问题。我了解我的活动布局错误。请帮帮我
  • 这是你的活动布局吗?
  • 是的,我添加了活动布局
  • 我将 Linearlayout 从 Activity 更改为 RelativeLayout 并修复。非常感谢
猜你喜欢
  • 2011-06-13
  • 1970-01-01
  • 2019-07-01
  • 2016-05-13
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 2016-07-10
相关资源
最近更新 更多