如何将宽度设置为“填充父项”的 Android 按钮中的图标和文本居中

2023-11-21

我想要一个 Android 按钮,其中图标+文本居中。我使用 drawableLeft 属性来设置图像,如果按钮的宽度为"wrap_content"但我需要拉伸到最大宽度,所以我使用宽度"fill_parent"。这会将我的图标直接移动到按钮的左侧,并且我希望图标和文本都在按钮内居中。

我尝试设置填充,但这只允许给出固定值,所以这不是我需要的。我需要将图标+文本居中对齐。

<Button 
    android:id="@+id/startTelemoteButton" 
    android:text="@string/start_telemote"
    android:drawableLeft="@drawable/start"
    android:paddingLeft="20dip"
    android:paddingRight="20dip"            
    android:width="fill_parent"
    android:heigh="wrap_content" />

关于我如何实现这一目标有什么建议吗?


以前的所有答案似乎都已过时

您可以使用MaterialButton现在让我们设置图标重力。

 <com.google.android.material.button.MaterialButton
        android:id="@+id/btnDownloadPdf"
        android:layout_width="0dp"
        android:layout_height="56dp"
        android:layout_margin="16dp"
        android:gravity="center"
        android:textAllCaps="true"
        app:backgroundTint="#fc0"
        app:icon="@drawable/ic_pdf"
        app:iconGravity="textStart"
        app:iconPadding="10dp"
        app:iconTint="#f00"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:text="Download Pdf" />

enter image description here

要使用材料组件,您显然需要:

添加依赖项implementation 'com.google.android.material:material:1.3.0-alpha01'(使用最新版本)

让您的主题扩展 Material Components 主题

<style name="AppTheme" parent="Theme.MaterialComponents.Light">
...
</style>

如果您不能这样做,请从 Material Bridge 主题扩展它

<style name="AppTheme" parent="Theme.MaterialComponents.Light.Bridge">
...
</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将宽度设置为“填充父项”的 Android 按钮中的图标和文本居中 的相关文章

随机推荐

  • 更好的图像着色逻辑/算法

    我正在开发一个 iOS 应用程序 用户可以通过触摸来更改图像的一部分颜色 例如茶杯 我使用 Floodfill 算法来填充颜色 以便用户必须点击茶杯来更改其颜色 效果很好 但是 最终颜色看起来与替换颜色没什么不同 考虑到对象的饱和度和亮度
  • 计算 MD5 哈希值是否比 SHA 系列函数消耗更少的 CPU 资源?

    在 标准 笔记本电脑 x86 硬件上计算 MD5 哈希值是否比 SHA 1 或 SHA 2 占用更少的 CPU 资源 我对一般信息感兴趣 而不是特定于某个芯片 UPDATE 就我而言 我有兴趣计算文件的哈希值 如果文件大小很重要 我们假设它
  • 如何在 Ubuntu 上设置 GOPATH 环境变量?我必须编辑什么文件?

    我正在尝试做一个go get go get github com go sql driver mysql 它失败并出现以下错误 package github com go sql driver mysql cannot download G
  • 比较 SQL 中的图像数据类型

    如何比较Image数据类型 我需要将存储在数据库中的文件与上传的文件进行比较但它说比较Image数据类型是不可能的我什至尝试转换为nchar CONVERT char 1000 FileData 谁能帮我 不要使用image数据类型已被弃用
  • 安卓打开pdf文件

    我正在开发一个 Android 应用程序 我必须打开一些文件 这是我使用意图的代码 public class FacturaActivity extends Activity public void downloadInvoice View
  • FORM布局如何从table切换到div?

    我注意到大多数人都在谈论使用 DIV 和 CSS 标签 文本框对 如何转换一张表 例如 table tr td td tr table
  • Java 中的自动委托

    我想向将在运行时生成的对象添加一些功能 然而 这个对象的接口非常大 并且不受我的控制 我想将对象包装在我自己的类中 该类添加了我想要的功能并将标准接口功能委托给原始对象 有没有什么方法可以在 Java 中执行此操作 而无需为每个对象创建 1
  • C++03 中默认初始化和值初始化之间的区别?

    我一直认为创建一个新对象总是会调用对象的默认构造函数 而构造函数是显式的还是由编译器自动生成的都没有区别 根据这个备受推崇的答案对于另一个问题 这在 C 98 和 C 03 之间发生了微妙的变化 现在的工作方式如下 struct B B i
  • 与 Objective-C 应用程序相比,捆绑的 Swift 库的文件大小开销是多少?

    我在我的一个项目中使用了 Swift 最后是时候将其上传到应用商店了 应用程序的大小是一个问题 因为下载更大尺寸的应用程序不是用户的选择 该应用程序的应用程序商店大小为 40MB 一直没问题 直到安卓版上传了 6MB 我已经在iOS应用程序
  • 从包含大于 Double.MaxValue 值的字符串中解析双精度值

    考虑下面的java代码 String toParse 1 7976931348623157E308 max value of a double in java double parsed Double parseDouble toParse
  • SequelizeJS 中的关联缓慢

    我正在尝试诊断使用 SequlizeJS 作为 ORM 的 Express 应用程序中某些速度变慢的原因 我有一个模型与其他 2 个模型有 2x hasMany 和 hasOne 关系 Update 我已经使用 classMethods a
  • ggmap 扩展缩放或边界

    我正在尝试解决以下问题 我使用 ggplot2 绘制岛屿地图 island get map location c lon 63 247593 lat 17 631598 zoom 14 maptype satellite islandMap
  • GROUP_CONCAT 具有不同分隔符的多个字段

    是否可以做类似的事情 GROUP CONCAT user price SEPARATOR AS items 结果是John3 99 Mike24 99 我需要的是这样的 John 3 99 Mike 24 99 价格字段基本上使用另一种类型
  • Android中读取广告包

    我正在开发一款 BLE 传感器 用于宣传制造商特定数据 有没有示例代码演示如何在 Android 中接收广告数据包并解析其有效负载 这就是我一直在寻找的 BLE 扫描 API BluetoothAdapter startLeScan Sca
  • jquery 检查元素是否有元素

    我正在使用 jquery 1 3 并尝试复制 1 4 has 功能 我需要检查 page 元素是否包含图像 如果不包含 则附加它 是不是类似 var imageid thirdimage if page has imageid undefi
  • Google Maps API:更改标记动画速度

    谷歌地图 API v3目前支持两种类型动画片 for markers 掉落和弹跳 有什么办法我可以speed up弹跳或减速掉落动画 Google Maps API 不支持动画属性或自定义 仅支持像您所说的那样选择 放置 或 弹跳 应该可以
  • 在 MySQL 中将 IP 转换为 Long

    我正在尝试使用ip2country表显示我网站上用户的国旗 我想到的最简单的方法是编写一条 SQL 语句 从会话表中获取用户并查询他们各自的 IP 是否在某个范围内 从而找出他们的国家 国旗 这很简单 但也很危险 因为当有 300 个在线用
  • 上传Excel并将其存储在数据库中?

    我想将Excel文件上传到我们的网页中 然后将相应的数据存储在数据库中 然后我想检索所有数据并以表格格式显示 我有一个代码 但使用该代码无法上传所有 Excel 文件 只能上传单一格式 下面是该函数 但有一些限制 public functi
  • 错误:无法删除该对象,因为在 ObjectStateManager 中未找到该对象

    试图在这里掌握实体框架 但我遇到了一些障碍 我有一个 Get 方法 工作正常并且已经过测试 但我的 Delete 方法不起作用 public static void Delete string name J1Entities db new
  • 如何将宽度设置为“填充父项”的 Android 按钮中的图标和文本居中

    我想要一个 Android 按钮 其中图标 文本居中 我使用 drawableLeft 属性来设置图像 如果按钮的宽度为 wrap content 但我需要拉伸到最大宽度 所以我使用宽度 fill parent 这会将我的图标直接移动到按钮