如何在小部件右侧创建没有下三角形的Android微调器

2023-12-10

我有一个屏幕,用户有很多项目需要输入,因此屏幕空间非常宝贵。

我希望屏幕上小部件的外观(在用户按下它之前)与 Spinner 右侧的 EditText 或 Spinner 小部件的左侧部分(没有正常的向下三角形)类似。然后,当用户按下该小部件时,他/她将看到正常的微调器选择对话框。

我可以更改一些 Spinner 样式属性来实现此目的吗?

我还没有看到这样的代码。

Thanks


这是一个相当老的问题,但我认为仍然相关,所以这是我的答案:

最简单的方法

lencinhaus的答案是正确的。它有效,但可以通过更简单的方式完成:只需添加另一个背景即可。下面的例子使用了标准Button背景更均匀的外观和感觉:

<Spinner
    android:id="@+id/my_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:prompt="@string/my_prompt" 
    android:background="@android:drawable/btn_default"
    />       

其他答案中使用的风格只不过是将背景应用于小部件。这可以直接在小部件上完成,从而无需创建新的 xml 文件。当然,如果您无论如何都要对微调器应用某种样式,那么这种方法没有任何问题。

Why?

理解其工作原理的关键在于 9-patch PNG 的描述。右侧和底部的线条用于填充,即保留一些空间不被其内容使用。在这种情况下,里面的文字。标准微调器背景使用右侧带有箭头的图像,该箭头位于可用文本区域之外。请参见下图 1 的说明:

图 1. 原始 Spinner bacground 9-patch PNG http://tinypic.com/images/404.gif
图 1. 原始Spinner背景 9 补丁 PNG。

仅移除箭头是不够的,因为填充仍然保留在那里。您需要使用减少填充的新 9 补丁图像(参见图 2,了解基于图 1 的示例),或者使用没有太多填充的预编译 9 补丁图像之一,例如EditText (@android:drawable/edit_text) or Button (@android:drawable/btn_default).

Figure 2. Modified Spinner bacground 9-patch PNG with reduced padding
Figure 2. Modified Spinner bacground 9-patch PNG with reduced padding.

了解这一点将使您能够创建自己的背景Spinner(事实上​​,对于任何小部件)。

对 9 个补丁文件的更好解释可以在这里找到

使用以下命令创建文件非常容易绘制9补丁可从 SDK 执行(在这里阅读相关内容),但没有什么可以阻止您使用Photoshop or Gimp反而。请记住,9 片 PNG 只是普通 PNG!唯一需要注意的是确保您仅绘制像素的外部线,并且其余像素完全透明。靠近边界的抗锯齿可能会产生意想不到的结果。

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

如何在小部件右侧创建没有下三角形的Android微调器 的相关文章

随机推荐

  • isReleaseBuild() 是 Android Gradle DSL 的一部分吗?

    我按照类似于以下的说明进行操作 Android Library Gradle 发布 JAR 但是 我收到以下错误 在项目 myProject 上找不到参数 的 isReleaseBuild 方法 我在 Maven 集成中看到的示例都没有定义
  • Pandas 数据帧太大而无法附加到 dask 数据帧?

    我不确定我在这里缺少什么 我认为 dask 可以解决我的内存问题 我有 100 多个以 pickle 格式保存的 pandas 数据帧 我希望将它们全部放在同一个数据框中 但不断遇到内存问题 我已经增加了 jupyter 中的内存缓冲区 看
  • Firefox 浏览器无法识别 table.cells 吗?

    我有以下 JavaScript 代码 var myCellCollection document getElementById myTbl cells 这在 IE 中效果很好 它返回表格单元格的集合 但同一行在 Firefox 中返回 未定
  • 在不使用配置规范的情况下从 Clearcase 复制具有特定标签的元素

    如何从中复制元素或文件Clearcase具有特定的label 不应用该label in config specs 我不想更改视图的配置规范 但我需要访问所选文件之一的旧版本 并且我想直接从现有视图执行此操作 同样 不更改任何内容 我知道我想
  • iOS 13 文本转语音(TTS - AVSpeechSynthesisVoice)更新后某些用户崩溃

    更新到 iOS 13 后 我们发现一小部分用户因 TTS 问题而出现奇怪的崩溃 有人知道为什么会发生这种情况吗 有人看到同样的崩溃吗 let voices AVSpeechSynthesisVoice speechVoices for vo
  • 使用空手道框架执行 API 测试时观察到 DNS 错误 [重复]

    这个问题在这里已经有答案了 在通过 karat 对 api 执行 get 调用时 当我使用的代理被注释时观察到 DNS 错误 但如果我使用代理 它会返回 401 错误 下面是以下代码 特征文件代码 Background url baseUr
  • 使用 Dask 导入大型 CSV 文件

    我正在使用 Dask 导入一个非常大的 csv 文件 680GB 但是 输出不是我所期望的 我的目标是仅选择一些列 6 50 并可能过滤它们 我不确定 因为似乎没有数据 import dask dataframe as dd file pa
  • SQL 截断、删除、删除建议

    我在 SQL 数据库中有一个表 想要从中删除数据 不过我想保留这些列 例如我的表有 3 列 姓名 年龄 日期 我不想删除这些 我只想删除数据 我应该截断 删除还是删除 不要删除 它会删除数据和定义 如果删除 数据就会消失 并且自动增量值将从
  • 如何将文本放置在边框上?

    我能够让它在白色背景下工作 但在背景不是白色的情况下 该解决方案也不起作用 我做了什么应该很明显为什么它不起作用 负边距 背景设置为背景颜色 有什么解决方案可以使它始终看起来不错吗 一种方法是使用间隔跨度和包装器 在本例中header 所有
  • Diesel:BoxableExpressions 在表及其连接上通用?

    我正在尝试在运行时构造一些过滤器 这些过滤器可以应用于表tunnel or to tunnel LEFT OUTER JOIN connection ON tunnel id connection tunnel id 这些表的定义如下 De
  • 剥离 HTML 标签以获取 python 中的字符串

    我尝试使用 BeautifulSoup 从 HTML 文件中获取一些字符串 每次使用它时我都会得到部分结果 我想获取每个 li 元素 标签中的字符串 到目前为止 我已经能够像这样获得 ul 中的所有内容 usr bin python fro
  • 对数据点拟合更好的高斯分布?

    我试图将高斯拟合到一组似乎遵循高斯分布的数据点 我已经检查了很多可能的方法来做到这一点 但我并不真正理解其中的大多数 然而 我找到了一个似乎有效的解决方案 但我得到的实际拟合结果看起来并不比我的数据点更像高斯 这是我的代码 import n
  • Magento - 订单详细信息不显示在管理面板中

    我们有一个电子商务 magento 商店 现在 我们遇到了一个奇怪的问题 我无法理解和调试 对于某些订单 虽然邮件已正确发送给客户并抄送至我们的电子邮件 ID 但 magento 管理的订单详细信息页面中未显示任何详细信息 管理订单详细信息
  • Flex 项目是块级元素吗?

    Flex 项目是 Flex 级别的元素 但它是块级别的元素吗 根据CSS 灵活框布局模块第 1 级第 4 章 弹性项目被认为是在弹性级别而不是在块级别 Flex 项目为其内容建立独立的格式化上下文 然而 弹性项目本身是弹性级别的 盒子 而不
  • 如何使用 boto3 将 S3 对象保存到文件

    我正在尝试用 new 做一个 hello world boto3AWS 的客户端 我的用例相当简单 从 S3 获取对象并将其保存到文件中 在 boto 2 X 中我会这样做 import boto key boto connect s3 g
  • 在引发事件之前是否有任何理由将事件分配给局部变量?

    我经常看到如下代码 想知道是否有任何理由为事件使用局部变量 而不是仅仅使用事件本身 有没有 var handler OnQueryComplete if handler null handler this new RepositoryEve
  • Rails 3.1.0 ActionView::Template::Error (application.css 未预编译)

    我使用带有索引功能的简单页面控制器制作了一个基本的 Rails 应用程序 当我加载页面时 我得到 ActionView Template Error application css isn t precompiled 2 3 4 5 6 7
  • 适用于 Python 3 的更好的 XML 序列化器

    我尝试了 xml marshaller 如下 from xml marshaller import xml marshaller class Person firstName John lastName Doe person1 Person
  • std::函数的 std::向量

    我有以下内容 typedef std function
  • 如何在小部件右侧创建没有下三角形的Android微调器

    我有一个屏幕 用户有很多项目需要输入 因此屏幕空间非常宝贵 我希望屏幕上小部件的外观 在用户按下它之前 与 Spinner 右侧的 EditText 或 Spinner 小部件的左侧部分 没有正常的向下三角形 类似 然后 当用户按下该小部件