我想像在按钮中一样在中心添加图像和文本

I want to add image and text in center like in button

下面是我尝试在按钮中心同时执行图标和文本但图标位于图像顶部的操作。我希望他们在中心。

 <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="#fff"
                    android:layout_weight="1"
                    android:gravity="center"
                   >
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/baseline_home_24"
                    />
                    <TextView
                        android:id="@+id/btnCleaner"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Cleaner"/>
                </RelativeLayout>

像这样简单地做:-

 <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="#fff">

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/baseline_home_24"
                        android:layout_centerInParent="true"  />
                    <TextView
                        android:id="@+id/btnCleaner"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"/>
/>

希望这会有所帮助。

试试这个:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:layout_weight="1"
    android:gravity="center"
    >
    <ImageView
        android:id="@+id/image" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/baseline_home_24"
        />
    <TextView
        android:id="@+id/btnCleaner"
        android:layout_toRightOf="@id/image"
        android:layout_marginLeft="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cleaner"/>
</RelativeLayout>

这个怎么样?

<FrameLayout style="?android:attr/buttonStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        style="?android:attr/buttonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@null"
        android:clickable="false"
        android:drawableLeft="@android:drawable/ic_delete"
        android:focusable="false"
        android:gravity="center"
        android:minHeight="0dp"
        android:minWidth="0dp"
        android:text="Button Challenge" />
</FrameLayout>

输出:

试试这个,它与您的要求相关:

<?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/grey_back"
    android:clickable="true"
    android:gravity="center"
    android:orientation="horizontal"
    android:padding="10dp">

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="5dp"
        android:src="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_margin="5dp"
        android:text="Do stuff" />
</LinearLayout>

您可以只使用如下所示的 Textview 来执行此操作:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="center">
           <TextView
            android:id="@+id/btnCleaner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cleaner"
            android:layout_centerInParent="true"
            android:drawableLeft="@drawable/yourDrawable" // your image 
            android:drawablePadding="3dp"/>
</RelativeLayout>

如果你想要图像在文本的左边,那么使用 drawableLeft & 如果在文本的右边,那么使用 drawableRight。您还可以通过 drawablePadding.

为文本中的图像提供填充

这可以通过 Google 的 Material Components

中的新 MaterialButton class 实现

例如:

<com.google.android.material.button.MaterialButton
    android:id="@+id/material_icon_button"
    style="@style/Widget.MaterialComponents.Button.Icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/icon_button_label_enabled"
    app:icon="@drawable/icon_24px"
    app:iconPadding="8dp"/>

会显示一个带有填充图标的按钮

可以在项目的 Github here

上找到此按钮的源代码和其余这些组件

您可以使用 MaterialButton provided by the official Material Components Library.

您必须应用 app:iconGravity="textStart" 属性。
类似于:

    <com.google.android.material.button.MaterialButton
        style="@style/Widget.MaterialComponents.Button.Icon"
        app:icon="@drawable/..."
        app:iconGravity="textStart"
        android:text="@string/..."/>

您还可以使用属性 app:iconPadding="xxdp".

更改图标和文本之间的填充