如何将宽度设置为“填充父项”的 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 按钮中的图标和文本居中 的相关文章

  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • CardView 圆角获得意想不到的白色

    When using rounded corner in CardView shows a white border in rounded area which is mostly visible in dark environment F
  • 如何在 iPhone 上使用 SwiftUI 显示表格数据?

    我正在为当地的体育联盟开发一个应用程序 一个视图将是当前排名 每行有几个字段 球队名称 已玩的比赛 得分等 我希望球队列左对齐 其他列右对齐 似乎最好的答案是 SwiftUI 的 Table 但在 iPhone 上 它只显示第一列 我尝试过
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL

随机推荐

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

    我正在开发一个 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 这会将我的图标直接移动到按钮