【问题标题】:Referencing static field from class in Android's xml layouts在 Android 的 xml 布局中引用类中的静态字段
【发布时间】:2014-02-14 22:26:45
【问题描述】:

假设我在布局中有关注 TextView

<TextView
    android:id="@+id/txtLoginError"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/sz_12dp"
    android:gravity="center"
    android:text="@string/foo" />

是否可以将@dimen/sz_12dp 更改为指向自定义类中的静态字段,例如:

public static class MyDimensions {
    public static int topMarginInPixels = 99; // which would be referenced in some fashion like android:layout_marginTop="@class/MyDimensions.topMarginInPixels"
}

我基本上是在为一些实验寻找一种“数据绑定”布局元素的方法;而不是加载视图然后在代码中修改它(findviewsetWeight 等)我希望在创建期间查看视图以从我的自定义类中获取大小,就像它从 R.java 中获取它一样。

注意:我知道支持多屏幕的最佳实践,px 和 dp 之间的差异,如何为不同的屏幕尺寸提供不同的 res/values 目录,所以请仅在您知道此问题的答案时才回复,而不是重复 @987654321 @。

【问题讨论】:

  • 假设维度文件与字符串文件有类似行为:stackoverflow.com/questions/2643949/…
  • 我真的不明白你想做什么......从dimens 文件中获取大小有什么问题?
  • @gunar 尺寸在运行时不可编辑
  • 确实,但是LayoutParam 可以在运行时更改其尺寸

标签: android


【解决方案1】:

不可能实现您所描述的,但是如果您真的想要像素并且只有像素,您可以很好地将px 大小而不是dp 放在 XML 或尺寸文件中 - 但我猜你早就知道了。

EDIT 在运行时确实不能更改维度,但甚至不应该这样做;如果您想在运行时更改视图的尺寸,请获取其 LayoutParams 对象并设置其宽度、高度、边距、内边距或您想要更改的任何内容。

【讨论】:

  • 是的,知道...我已经编辑了问题,以便更好地解释我基本上是在寻找“数据绑定”。谢谢。
  • 我知道我可以更改 LayoutParam,但正如您在我的问题中看到的那样“而不是加载视图然后在代码中修改它(findview、setWeight 等)我希望在创建期间获取视图以获取我的自定义类的大小就像从 R.java 中获取它一样”。无论如何,算了吧……我会等着看是否有人有一些疯狂的解决方案,如果没有,我会删除这个问题,因为我们只是重申每个人都已经知道的事情。
  • 请留下...将其标记为收藏;我也很好奇,尽管我并没有真正看到它的实际性质
猜你喜欢
  • 1970-01-01
  • 2015-07-15
  • 2021-10-08
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
相关资源
最近更新 更多