如何在样式文件中定义可绘制对象的大小?

2024-03-18

我想指定一次资源/值/styles.xml两个复选框的大小及其四个形状可绘制对象

  1. res/drawable/cb1_checked.xml
  2. res/drawable/cb1_unchecked.xml
  3. res/drawable/cb2_checked.xml
  4. res/drawable/cb2_unchecked.xml.

这样,尺寸将在样式中出现一次,而不是在可绘制对象中出现四次。

下面的两种尝试都不起作用。你能提出一个解决方案吗? (如果您发现这两次尝试有什么问题,请务必提及。)

-------------------------------------------------- --------------尝试1-------------------------------------------------- --------------

Replace

res/drawable/cb1_checked.xml

<size android:width="24dp"
      android:height="24dp" />

with

资源/值/styles.xml

<item name="android:layout_width">24dp</item>
<item name="android:layout_height">24dp</item>

-------------------------------------------------- --------------尝试2-------------------------------------------------- --------------

Add

资源/值/styles.xml

<item name="android:background">cb_background</item>

并定义一个背景可绘制

res/drawable/cb_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#00FF00"/>
    <size android:width="24dp"
          android:height="24dp" />
</shape>

-------------------------------------------------- --------------Added-------------------------------------------------- --------------

这是完整的 XML 文件集:

资源/布局/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/MyLL"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <CheckBox
        android:id="@+id/cb1"
        style="@style/CB_style"
        android:button="@drawable/cb1_selector"
        android:height="@dimen/my24sp" />

    <CheckBox
        android:id="@+id/cb2"
        style="@style/CB_style"
        android:button="@drawable/cb2_selector"
        android:height="@dimen/my24sp" />

</LinearLayout>

资源/值/styles.xml

<style name="AppBaseTheme" parent="android:Theme.Light">
</style>

<style name="AppTheme" parent="AppBaseTheme">
</style>

<style name="CB_style" parent="@android:style/TextAppearance.Medium">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_gravity">center_horizontal</item>
    <item name="android:gravity">center</item>
    <item name="android:checked">false</item>
</style>

res/drawable/cb1_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:constantSize="true">

    <item android:state_checked="true"
          android:drawable="@drawable/cb1_checked" />

    <item android:state_checked="false"
          android:drawable="@drawable/cb1_unchecked" />

</selector>

res/drawable/cb1_checked.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FF0000"/>
    <size android:width="24dp"
          android:height="24dp" />
</shape>

res/drawable/cb1_unchecked.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#880000"/>
    <size android:width="24dp"
          android:height="24dp" />
</shape>

(对于 cb2 选择器和选中/未选中的可绘制对象也类似)


存在一个弱解,弱的意思是机器人:宽度 and 安卓:高度仍然出现四次,但至少可以通过设置一个参数来调整尺寸。

对于四个可绘制对象中的每一个,添加

<size android:width="@dimen/my24dp"
      android:height="@dimen/my24dp" />

并定义尺寸

资源/值/dimens.xml

<dimen name="my24dp">24dp</dimen>

所以问题仍然存在:是否可以在可绘制对象中根本不指定大小?

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

如何在样式文件中定义可绘制对象的大小? 的相关文章

随机推荐

  • 如何将 Google 地图标记保持在地图中心而不出现延迟?

    当用户拖动相机时 我试图在地图中心保留一个标记 我目前正在使用 OnCameraChangeListener 来执行此操作 如下所示 Override public void onCameraChange CameraPosition po
  • 如何写入 OpenGL 深度缓冲区

    我正在尝试实现一种老式技术 其中使用渲染的背景图像和预设深度信息来遮挡场景中的其他对象 因此 例如 如果您有一张房间的图片 前景中的天花板上悬挂着一些电线 则这些电线会在深度图中给出浅深度值 并且在正确渲染时 允许角色在电线 后面 行走 但
  • Chart.js 响应式条形图标签大小调整

    所以我有一个使用 Chart js 的条形图 并且启用了响应式功能 它似乎适用于某些图表 但不适用于其他图表 例如 我的条形图标签似乎没有随窗口调整大小 但其他所有内容都会使整个图表在较小的窗口尺寸下看起来非常奇怪 如何重新调整标签大小以使
  • sed 或 awk 替换块中的行

    输入文件包含 abc para1 123 para2 456 para3 111 pqr para1 333 para2 765 para3 1345 xyz para1 888 para2 236 para3 964 shell脚本的要求
  • 获取 UTC 时间戳[重复]

    这个问题在这里已经有答案了 如何在 JavaScript 中获取当前 UTC 时间戳 我想这样做 这样我就可以从客户端发送独立于时区的时间戳 new Date getTime 有关更多信息 请参阅 詹姆斯 麦克马洪的回答 https sta
  • 从 Finger Tree 文章中查找丢失的“Reduce”类型类

    昨天的维基百科 http www urbandictionary com define php term Wikibender开始于这个计算器问题 https stackoverflow com questions 8428554 what
  • 查找 Android 应用程序的包名称以使用 Intent 从网络启动 Market 应用程序

    我正在创建一个移动网站 其中包含一个页面 人们可以从中下载我们推荐的相关应用程序 我发现了指示 http developer android com distribute googleplay promote linking html用于创
  • 预期有 0​​ 个参数的问题,但在 Redux Toolkit 中得到 1

    我有一个错误Expected 0 arguments but got 1 在简单的 Redux Slice 文件中 当我尝试调度时出现此错误 App tsx useEffect gt dispatch getMovies query sea
  • 如何在 Linux Fedora 上的 Apache 中启用 PHP?

    标题几乎概括了这一点 我在跑Fedora 18 64 位通过 httpd 安装 Apache 我的 Apache 运行得很好 但我的 PHP 似乎无法工作 我相当确定我的机器上确实安装了它 Linux 新手 我在我的目录中创建了一个 tes
  • PIP:“无法卸载‘ipython’。它是一个已安装的 distutils 项目,因此我们无法准确确定......”[重复]

    这个问题在这里已经有答案了 正在尝试安装spyder https pypi org project spyder using pip pip install spyder 弹出这个错误 无法卸载 ipython 这是一个已安装的 distu
  • 标尺应用程序如何在所有设备上保持准确?

    我真的很困惑目前市场上的 iOS Ruler 应用程序如何与不同尺寸的设备兼容 底部显示了一个示例 经过研究 我得出的结论是 实时获取当前屏幕的 PPI 是不可能的 这使得无法以编程方式绘制尺子 我的疑问是这些标尺应用程序如何在无法获取设备
  • 关于在视频中查找学生

    我现在正在从事一个眼球追踪项目 在这个项目中 我在网络摄像头视频中跟踪眼睛 分辨率为 640X480 我可以在每一帧中定位和跟踪眼睛 但我需要定位瞳孔 我读了很多论文 大部分都是参考Alan Yuille的可变形模板方法来提取和跟踪眼睛特征
  • Spring + Oauth2:如何刷新访问令牌

    我正在使用 Spring Boot 构建 REST Web 服务 身份验证是使用 Spring Security 和 OAuth2 实现的 用户根据 LDAP 服务器进行身份验证 这是我的网络安全配置 Configuration Enabl
  • C# 开发最简单的免费设置

    我在上网本上使用 Windows XP SP3 我需要编译 C 程序以供学习 我没有快速的电脑或快速的互联网连接或快钱 有人可以建议让我继续前进的最佳方法吗 谢谢你们 http www microsoft com express Downl
  • 在 Android 3.1 上调整 TextView 大小不会缩小其高度

    我有一个TextView可以动态调整大小 我使用setTextSize 它在 Android 2 2 上正确扩展和收缩其边界 但在Android 3 1上 当文本变小时 区域的高度不会缩小 这证明了这一点 布局只是简单的垂直LinearLa
  • 背景和 CSS 浮动

    所以我使用 960 网格系统 发现了一些他们不支持的东西 我考虑过切换到蓝图 但我必须在此过程中稍后再回到设计 不管怎样 我简化了我的代码来展示我所经历的
  • 对数据库中的项目符号进行排序

    我有一个专栏 datatype varchar 50 在数据库 SQL Server 2008 中 其值如下所示 1 2 1 1 11 4 1 5 2 1 1 1 4 1 2 1 4 2 2 4 3 4 2 4 3 1 4 2 1 11 2
  • HTML 标题对齐问题

    你好 我有 2 个简单的标题 一个 h3 位于一个 h2 之上 由于某些奇怪的原因 h2 标题的左侧似乎有一个 1px 的间隙 这让我发疯 我只是不明白为什么会这样 h2 的字体大小为 40px 而 h3 的字体大小为 12px 有人能帮我
  • 使用 EPPlus 返回 INT 的 Excel 日期列

    所以我使用 EPPlus 来读取和写入 Excel 文档 Workflow 用户生成填充的 Excel 文档 打开文档并添加一行 已上传并已阅读 当我读回值时 使用 EPPlus 创建文档时生成的日期显示正确 但用户更改日期或添加的行显示为
  • 如何在样式文件中定义可绘制对象的大小?

    我想指定一次资源 值 styles xml两个复选框的大小及其四个形状可绘制对象 res drawable cb1 checked xml res drawable cb1 unchecked xml res drawable cb2 ch