如何将 xml 布局中的元素分组以在 Android 中对齐

How to group elements in xml layout for align in Android

我在 xml 布局中有 TextViewImageButtonImageButton 位于 TextView 的右侧,我希望 group 都将它们水平居中放置在屏幕上。我用 RelativeLayout.

我该怎么办?

我假设您正在开发 android 应用程序...如果是这样,可以使用此代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        >

   <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerInParent="true"
       android:layout_centerHorizontal="true"
       android:orientation="horizontal">

       <TextView
           android:id="@+id/headerText"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/hello_world"
           />

       <ImageButton
           android:layout_width="50dp"
           android:layout_height="50dp"
           android:layout_centerHorizontal="true"
           android:layout_centerVertical="true"
           android:src="@drawable/ic_launcher" />
       </LinearLayout>


</RelativeLayout>

android:layout_centerInParent="true" 会将项目放在 RelativeLayout 父级的中间 android:layout_centerHorizontal="true" 只会水平居中项目。您可以删除不需要的那个。

一种优化方法,它不使用不必要的布局嵌套,并通过将图像合并到 TextView 中来减少视图数:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    >
    <TextView
        android:id="@+id/headerText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_centerHorizontal="true"
        android:drawableRight="@drawable/ic_launcher"
        android:text="@string/hello_world"
    />
</RelativeLayout>

秘诀在于复合绘图的使用 android:drawableRight="@drawable/ic_launcher"
要以编程方式更改它,请使用 setCompoundDrawablesWithIntrinsicBounds()