【问题标题】:How to set default Android padding to an element without padding?如何将默认的 Android 填充设置为没有填充的元素?
【发布时间】:2012-10-04 03:53:23
【问题描述】:

假设我刚刚添加了两个标准小部件——CheckBox 和 CheckedTextView。第一个有漂亮、清晰的填充,尽管我没有设置任何填充,并且 .xml 文件中没有设置填充。另一个没有任何填充。

现在,我可以通过反复试验从 CheckBox 中获取填充的值(固定)。但我的问题是如何以动态方式设置它——即如果在 Android 7.0 中 CheckBox 的填充为“20sp”并且我设置为“10sp”(因为它现在是 10sp——我正在弥补)那么我的两个小部件将具有不同的填充。

而且我希望有一个一致的填充。那么如何设置"?android/default_padding" 之类的填充?

澄清:我有兴趣使用系统默认填充,而不是硬编码我在所有小部件上组成的相同值。

【问题讨论】:

    标签: android padding


    【解决方案1】:

    我在 API 级别 10(以及所有其他 Android 平台上)为您查找了它,Android 使用带有预定义填充的 9-Patch 图像(在选择器中没有声明填充),例如我测量了该复选框,并将其设置为:左,右:6dp;顶部,底部:12dp。默认按钮的内边距为 10dp;所以据我所知,没有默认填充。但在大多数情况下,10dp 是好的。此外,它实际上取决于您设备的屏幕尺寸。您必须像 Daniel 建议的那样声明自己喜欢的填充。例如:在您的 Values 文件中 10dp 和 values-large 中可能是 15。

    编辑: 这是 Android 2.3.3 上 mdpi 的默认复选框:

    【讨论】:

    • 感谢您详尽的回答。可惜Android有这么多粗糙的边缘;-)。
    【解决方案2】:

    您可以在您的资源中创建一个名为 dimens.xml 的 xml 文件,然后添加如下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
    <dimen name="default_padding">10dp</dimen>
    </resources>
    

    然后你从你的布局中调用这样的东西:

    android:padding="@dimen/default_padding"
    

    我认为这是一种一致的工作方式 :) 祝你好运!!!

    【讨论】:

    • 你没有回答我的问题——我要求 ANDROID 默认填充(在 CheckBox 中使用的填充)。
    • 我很抱歉,但这是我认为你可以为你的问题找到“解决方案”的最佳方式,因为我认为你想要的东西是不可能的:)。
    • 您可以在内部创建一个 CheckBox,读取其填充,动态应用此填充。所以肯定有可能,但它是丑陋的黑客,我希望有更聪明的东西。
    猜你喜欢
    • 1970-01-01
    • 2020-06-11
    • 2011-04-26
    • 2020-07-14
    • 2014-03-05
    • 2022-12-21
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多