1

在此处输入图像描述

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

 <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>
4

7 回答 7

1

尝试这个:

<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>
于 2018-09-06T12:56:09.747 回答
0

这可以通过在 Google 的Material ComponentsMaterialButton中找到的新类来实现

例如:

<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 上找到

于 2018-09-06T13:25:19.657 回答
0

您可以仅使用 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为文本中的图像提供填充。

于 2018-09-06T13:11:07.377 回答
0

像这样简单地做:-

 <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"/>
/>

希望这会有所帮助。

于 2018-09-06T12:49:02.417 回答
0

可以使用MaterialButton官方提供的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"

于 2019-09-30T06:24:52.747 回答
0

这个如何?

<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>

输出:

在此处输入图像描述

于 2018-09-06T13:02:06.073 回答
0

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

在此处输入图像描述

<?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>
于 2018-09-06T13:04:20.583 回答