设置背景时按钮变大 - 如何使其变小

2024-05-02

我想让我的按钮在设置背景之前缩小或恢复正常。

我知道使用背景色调可以使用相同的背景颜色来解决此问题,但我的问题是我在背景上使用选择器。当选择器设置为按钮背景时,它变得更宽。当我将背景切换为背景色调时,颜色变得不同(例如对我来说是紫色)并且按下时不会改变颜色。填充不能通过设置负值或正值来解决。我还可以做些什么 ?我的目标是我的按钮在单击时会改变颜色,但它的高度很窄/默认大小,就像换行内容一样。

这是我的按钮示例代码

<Button
    android:text="Add"
    android:fontFamily="@string/fontFamily"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/btnInformantsAdd"
    android:gravity="center"
    android:textColor="@color/white"
    android:textSize="@dimen/textSizeCommon"
    android:background="@drawable/ButtonSelectorBlue"
    android:paddingTop="-10dp"
    android:paddingBottom="-10dp"
    android:layout_gravity="center"
    android:layout_marginTop="@dimen/marginTop1"
    android:layout_marginBottom="@dimen/marginTop1" />

选择器 XML 代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark_light" />
          <padding android:left="10dp"
             android:top="@dimen/paddingSide1"
             android:right="10dp"
             android:bottom="@dimen/paddingSide1"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>

  <item android:state_pressed="false">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark"/>
          <padding android:left="0dp"
             android:top="0dp"
             android:right="0dp"
             android:bottom="0dp"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>
</selector>

设置背景后按钮会变大

按钮不会变大。


这是按钮的默认背景,你可以看到它的周围是透明的颜色。

但是当你将按钮的背景更改为你的ButtonSelectorBlue文件中没有透明颜色,所以会让你觉得它变大了。

你可以看到这些代码:

<Button
    android:text="Add"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/btnInformantsAdd"
    android:gravity="center"
    android:textColor="#e7dbdb"
    android:textSize="20dp"
    android:background="@drawable/button_selector_blue"
    android:paddingTop="-10dp"
    android:paddingBottom="-10dp"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp" />

<Button
    android:text="Add"
    android:id="@+id/bt"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:gravity="center"
    android:textColor="#282828"
    android:textSize="20dp"
    android:onClick="OnClick"
    android:layout_gravity="center" />

两个按钮,第一个背景是你的ButtonSelectorBlue文件,第二个是默认的,看这张图:

它们的大小相同。


因此,您需要在选择器文件的外围添加透明颜色,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark_light" />
          <stroke android:color="#00000000"
                  android:width="10dp"/>
          <padding android:left="10dp"
             android:top="@dimen/paddingSide1"
             android:right="10dp"
             android:bottom="@dimen/paddingSide1"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>

  <item android:state_pressed="false">
    <layer-list>
      <item>
        <shape android:shape="rectangle">
          <solid android:color="@color/bluegreendark"/>
          <stroke android:color="#00000000"
                  android:width="10dp"/>
          <padding android:left="0dp"
             android:top="0dp"
             android:right="0dp"
             android:bottom="0dp"/>
          <corners android:radius="5dp" />
        </shape>
      </item>
    </layer-list>
  </item>
</selector>

最后预览一下:

result:

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

设置背景时按钮变大 - 如何使其变小 的相关文章

随机推荐

  • d3.js。带条的旋转地球仪

    我正在尝试创建带有像这样的酒吧的旋转地球仪这个例子 http data arts appspot com globe 你可以看我的例子here http jsfiddle net zeleniy jrh5xucs 一切都很顺利 直到酒吧超出
  • 使用异步数据初始化组件

    我想弄清楚如何以及在哪里在react redux thunk中为我的选择框加载数据 即在我的操作上调用调度 我不确定它是否应该放入我的应用程序容器的构造函数中 或者我应该将其加载到我的组件中 在我的示例中 MyDropdown 我的主要应用
  • TFS:在服务器重新启动或 Windows 更新安装时触发构建的最佳方式

    简而言之 要求是验证我们最新发布的软件是否可以在应用最新的 Windows 更新和 或其他补丁后构建并安装 因此 构建服务器虚拟机将专门为此目的进行配置 并且构建仅需要在更新后运行 由于此类更新通常会重新启动 因此我正在考虑触发构建和部署的
  • 使用 Ruby on Rails ActiveSupport::Concern 功能时如何“嵌​​套”包含模块?

    我正在使用 Ruby 1 9 2 和 Ruby on Rails v3 2 2 gem 鉴于我正在使用 RoR 我想 嵌套 包含模块ActiveSupport 关注 http api rubyonrails org classes Acti
  • after_save 回调将 Updated_by 列设置为 current_user

    我想使用 after save 回调将 Updated by 列设置为 current user 但 current user 在模型中不可用 我该怎么做 您需要在控制器中处理它 首先对模型执行保存 如果成功则更新记录字段 Example
  • 在 Storybook 中隐藏每个故事的插件

    我正在使用 Storybook 和 React 构建一个组件库 使用 CSF 方法包含故事 我有多个插件 并在显示单个故事时使用它们 我还在一个视图中一起显示所有故事 作为参考 我想禁用特定插件的就是这个故事 在这种情况下 我想禁用旋钮 当
  • C# 在构建期间重命名命名空间

    我正在寻找一种在构建过程中重命名第 3 方程序集中的命名空间的方法 以及用户代码中相应的 using 语句 我搜遍了福迪的织工 但没有找到这样的东西 有一个对 ILRepack 的拉取请求可以完成确切的事情 但它似乎已经过时并且没有通过 C
  • System.ArgumentException:程序集中的重复类型名称

    我正在使用 EF 4 1 开发 ASP Net MVC 3 Web 应用程序 从今天开始 我收到此错误 System ArgumentException 程序集中的重复类型名称 我不知道是什么原因造成的 执行查找时 它发生在我的存储库中 p
  • 适用于 iPhone 的 JavaScript 可从非默认 iOS 浏览器在 Safari 中打开

    在移动 Safari 中打开的 googlechrome www lego com 将切换到 Google Chrome iOS 应用程序来打开该 URL 这允许像下面这样的 scriptlet 它允许您从移动 Safari 切换到 Goo
  • Summernote onKeyup 事件未按预期工作

    我将 Summernote 编辑器应用于文本区域 我希望当我在编辑器中键入一些文本时 该文本应反映在 div 中 因此我有一个文本区域和一个 div result 其中应在每次按键时写入更改事件
  • 计算回头客

    我正在分析一家商店的销售数据 并希望计算 第一订单客户 在下个月变成回头客的百分比 我有一个包含所有订单的数据框 其中包括客户 ID 日期和标记 如果这是他 她的第一笔订单 这是我的数据 import pandas as pd data N
  • 运行时之前初始化的数据段值将存储在哪里?

    通常数据段在C code位于RAM易失性存储器 由初始化数据段组成 未初始化数据段 BSS 堆栈内存和堆 堆栈内存仅在运行时调用例程和在push and pull的价值观 堆用于动态内存分配调用malloc calloc and reall
  • 我在 Python 中查找重复循环的正则表达式模式有什么问题?

    我想匹配任何具有重复循环的字符串 就像这个数据一样 3333333333333333333333333333333333333333 1 digit cycle 3 1666666666666666666666666666666666666
  • React 18 的 create-react-app 依赖版本问题

    npx create react app my project导致以下依赖错误 npx版本 8 5 0 Installing template dependencies using npm npm ERR code ERESOLVE npm
  • 通过 Facebook iOS SDK 获取我的所有活动

    在我的 iOS 应用程序中 我使用以下代码获取访问令牌 self facebook authorize NSArray arrayWithObjects user events friends events nil 然后我使用以下代码请求我
  • java堆空间OutOfMemoryError分析工具

    我正在得到一个OutOfMemoryError Java heap space 我可以使用任何工具来查找根本原因吗 您可以使用一些分析工具 例如 eclipse mat 分析应用程序的堆转储 以查看哪些内容消耗了多少堆 但首先您需要获取应用
  • 如何选择不同级别的多个节点?

    拥有这个 简化的 XML
  • Visual Studio 2017 无法安装多个组件

    Visual Studio 2017 社区版发行版的安装程序因多个组件而失败 由于以下原因 产品无法安装列出的工作负载和组件 一个或多个包失败 工作负载不完整 使用 NET进行移动开发 Microsoft VisualStudio Work
  • C++:错误:限定名称的使用无效

    更新 我认为它已经修复了 多谢你们 我收到错误 但我无法弄清楚 我有这个代码 A Structure with one variable and a constructor struct Structure public int dataM
  • 设置背景时按钮变大 - 如何使其变小

    我想让我的按钮在设置背景之前缩小或恢复正常 我知道使用背景色调可以使用相同的背景颜色来解决此问题 但我的问题是我在背景上使用选择器 当选择器设置为按钮背景时 它变得更宽 当我将背景切换为背景色调时 颜色变得不同 例如对我来说是紫色 并且按下