如何为 Android 中单击的图像按钮制作边框?

2024-01-11

我正在使用 Imagebuttons 在我的 android 项目中显示一些图标。

<ImageButton
    android:id="@+id/button_one"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:padding="20dp"
    android:contentDescription="@string/button_one"
    android:background="@android:color/transparent"
    android:src="@drawable/button_one" />

我希望,当按钮处于按下状态时,有一个带有圆角的白色边框。我能做些什么来实现这一点?可以仅使用代码来完成此操作还是需要额外的背景图像?


如果您不想创建带有边框的单独图像,这是一种方法。

使用您的边框样式创建可绘制的 xml(例如 border.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="1dp"
        android:color="#FFF" />
    <padding
        android:left="1dp"
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp" />
    <corners
        android:bottomRightRadius="8dip"
        android:bottomLeftRadius="8dip"
        android:topRightRadius="8dip"
        android:topLeftRadius="8dip" />
</shape>

创建一个可绘制的选择器(例如 some_selector_name.xml)。基本上,当按下时,它会显示您的边框可绘制。否则,它将是透明的。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/border" />
    <item android:drawable="@android:color/transparent" /> 
</selector>

将图像按钮的背景设置为可绘制选择器。

<ImageButton
    android:id="@+id/button_one"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:padding="20dp"
    android:contentDescription="@string/button_one"
    android:background="@drawable/some_selector_name.xml"
    android:src="@drawable/button_one" />

现在,当您按下按钮时,它应该显示白色边框。 这只是一个例子,但您应该明白了。

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

如何为 Android 中单击的图像按钮制作边框? 的相关文章

  • Android 中用虚拟键盘捕捉按键按下的情况?

    使用物理键盘 您可以使用按键监听器 http developer android com reference android text method KeyListener html 就像是 myEditText setOnKeyListe
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • finish() 完成活动但它仍然在后台

    我有一个关于 android studio 中活动的 finish 方法的问题 我有这个简单的代码 public class MainActivity extends AppCompatActivity Override protected
  • 为什么Android应用程序在发布到市场后尺寸会增加?

    我最近在 Android 市场上发布了我的应用程序 显示应用程序大小为 5 4MB 而实际 apk 大小为 2 8MB 为什么显示多出2MB 我应该如何限制我的应用程序大小 请帮我 您的应用程序大小会增加 因为您使用了复制保护选项ON在发布
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 在为 Android 实现 Google 登录时,任务“:app:transformClassesWithDexForDebug”执行失败

    我正在尝试为 Android 实现 Google 登录 并且我正在按照以下说明进行操作 https developers google com identity sign in android start integrating https
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • NoClassDefFoundError:无法解析:Landroid/support/v7/appcompat/R$styleable

    新手尝试完成 Google 提供的我的第一个应用程序教程 在这个致命异常的过程中 我确实导入了很多随机包来消除许多事情的 无法解析 错误 例如 ActionBarActivity EditText Fragment LayoutInflat
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • 在 Honeycomb Android 3.0 中显示 Action Bar 菜单项的图标

    我正在使用 Honeycomb android 3 0 开发 Android 应用程序 我正在尝试在 Action Bar 中显示菜单 菜单有一个图标和标题 当我们单击菜单项时 它会以下拉列表的形式显示其项目 它是下拉列表中带有项目名称但不
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp

随机推荐

  • 使用 PHP S3 类时出现 RequestTimeTooSkewed 错误

    这是我的第一个PHP项目 所以我真的一点也不了解PHP 我想做的是使用 PHP S3 类将文件上传到 S3 存储桶 一个示例代码片段昨天可以工作 但是当我今天再次开始使用它时 几乎完全相同的代码停止工作 现在我只收到 putObject 函
  • 如何测试 Braintree 交易退款?

    我正在尝试对 Braintree 交易退款进行测试 但遇到了问题 Braintree 的 API 仅允许您为已结算的交易发放退款 然而 在沙箱环境中创建的交易仅每 24 小时 结算 一次 因此 当我尝试在测试套件中退款时 退款总是被拒绝 因
  • NSPopupButton 中带有绑定的分隔符项

    的内容NSPopupButton绑定到一个NSArray字符串 我们如何通过绑定插入分隔符项目 The 字符串 就像在过去 经典时代一样 不起作用 即字面上显示为 菜单项 是否有任何带有标准 Cocoa 类和绑定的开箱即用的解决方案 这应该
  • CATextLayer旋转?

    这应该确实有效 但不是 CATextLayer textLayer CATextLayer layer textLayer string text textLayer setValue NSNumber numberWithDouble M
  • 如何在 Pygame 中插入滑块?

    我目前正在 Python 上进行物理模拟 使用 Pygame 模拟室内的气体云 我的问题是我无法在代码中插入工作滑块来更改参数的值 我有一个运行模拟的 运行时 循环 当我想在其中插入工作滑块时 模拟就会停止 我无法让模拟和滑块同时工作 下面
  • 为什么正则语言的补语仍然是正则语言?

    根据我的教科书 只要L1是正则语言 L1 A L1的补集就是正则语言 A 不是还包括上下文无关语言 上下文相关语言和递归可枚举语言吗 A L1 也将包括所有这些 不是吗 那怎么可能有规律呢 在有限状态机的表示下 我理解为什么补码仍然是常规语
  • 向静态 Azure 网站添加身份验证

    我们有一个 Azure 网站 托管一个静态站点 仅一些 HTML CSS Javascript 然后通过 AJAX 调用与我们的 Azure 移动服务进行通信 我们想向该站点添加一些非常简单的身份验证 只需静态用户名 密码就足够了 请推荐最
  • 如何在 scipy.optimize 中使用 fmin_cg 获得正确的尺寸

    我一直在尝试使用 fmin cg 来最小化逻辑回归的成本函数 xopt fmin cg costFn fprime grad x0 initial theta args X y m maxiter 400 disp True full ou
  • Java foreach 对原语的迭代顺序是否精确定义?

    示例代码 int a new int 0 1 2 3 int result 0 for int i a result i 循环是否保证迭代a 0 a 1 a 2 a 3 以该顺序 我坚信答案是肯定的 但是这一页 http java sun
  • JLabel 仅显示 initComponents() 是否被删除

    MainFrame java JFrame public MainFrame initComponents Letters pl new Letters this this setContentPane pl this setTitle P
  • 无法使用反应钩子读取未定义的属性“映射”

    我试图使用 fortnite api 来显示当前的物品商店 但我收到了如标题所示的错误 当我控制台日志结果时 它显示一个数组 但我无法映射它 为什么 import React useState useEffect from react im
  • 在互操作 C# 期间延迟 Excel 计算

    我必须从 C 程序将数百个单元格输入到 Excel 工作表中 每次我设置一个单元格或一个范围时 Excel都会缓慢响应 大概是在我添加的每个输入之间更新各种输出 有没有办法禁用我的 C 程序的计算 并在完成设置单元格并准备好读取输出后重新启
  • LINQ 有条件添加联接

    我有一个 LINQ 查询 我试图从 2 个表返回数据 但我加入的表是有条件的 这就是我想做的 if teamType A var query from foo in context People join foo2 in context P
  • 在运行时请求管理员权限

    如何在运行时请求管理员权限 以便提示用户允许或禁止 如果您希望它响应按钮 例如 像任务管理器中的 显示所有用户的进程 您必须使用以下方法重新启动您的应用程序 ShellExecute 0 L runas exepath 0 0 SW SHO
  • 如何使用 Visual Studio 为 .net Framework 4.7.2 项目创建 SDK 样式项目?

    我运行的是最新版本的VS2019 16 6 1 然而 Windows 类库的新项目向导仍然创建旧样式的项目 我想用这个方法研究这个问题 https stackoverflow com questions 62251125 target v4
  • 如何使我的本地主机可通过互联网访问

    我在本地计算机上的 JBoss 上托管了一个应用程序 我也可以通过 localhost 或通过我的 IP 访问 现在我希望其他用户可以通过我的 IP 通过互联网访问同一个应用程序 您能让我知道如何配置 JBoss 来处理这些请求吗 http
  • 无法从 WinApi 箱调用 CryptDecrypt,因为它找不到模块

    In the 文档 https docs rs winapi x86 64 pc windows msvc winapi um wincrypt fn CryptDecrypt html它说该函数位于winapi um wincrypt C
  • 如何将 tr 附加到表格顶部

    我如何将新的 tr 附加到表格顶部而不是其他 tr 下 Example table width 100 tr td something td td else here td tr tr td something2 td td else he
  • scala中基于相邻元素之间差异的拆分列表

    我们如何根据相邻元素之间的差异在 scala 中拆分列表 例如 给定 List 1 3 6 10 12 14 和差值 3 该函数将返回 List List 1 3 List 6 List 10 12 14 我们可以使用foldLeft 来做
  • 如何为 Android 中单击的图像按钮制作边框?

    我正在使用 Imagebuttons 在我的 android 项目中显示一些图标