gpt4 book ai didi

android - 获取安卓:padding attribute programmatically

转载 作者:IT老高 更新时间:2023-10-28 23:32:06 24 4
gpt4 key购买 nike

从一个角度来看,如何以编程方式获取 android:padding 属性的值?我目前正在使用:

private static final String ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android";
private static final String ATTRIBUTE_PADDING = "padding";

public ActivityWrapperView(Context context, AttributeSet attrs) {
super(context, attrs);
int padding = attrs.getAttributeIntValue(ANDROID_NAMESPACE, ATTRIBUTE_PADDING, -1);
}

这返回-1,我也尝试使用“android:padding”作为属性名称,但仍然返回-1。

编辑:我的要求:在布局 XML 中指定 android:padding 值时, View 将使用此填充。如果未指定填充,它将使用默认填充

最佳答案

最简单的方法是使用 android.R.styleable,如果它已经可用的话。它用于获取自定义属性的方式相同。 R.styleable 是一个包含属性值的 int 数组的类。所以你需要创建自己的 int 数组,其中包含你需要的 int 属性值。

public ActivityWrapperView(Context context, AttributeSet attrs) {
super(context, attrs);

//check attributes you need, for example all paddings
int [] attributes = new int [] {android.R.attr.paddingLeft, android.R.attr.paddingTop, android.R.attr.paddingBottom, android.R.attr.paddingRight}

//then obtain typed array
TypedArray arr = context.obtainStyledAttributes(attrs, attributes);

//and get values you need by indexes from your array attributes defined above
int leftPadding = arr.getDimensionPixelOffset(0, -1);
int topPadding = arr.getDimensionPixelOffset(1, -1);

//You can check if attribute exists (in this examle checking paddingRight)
int paddingRight = arr.hasValue(3) ? arr.getDimensionPixelOffset(3, -1) : myDefaultPaddingRight;


}

根据@Eselfar 的评论进行编辑:
别忘了释放 TypedArray: arr.recycle() !

关于android - 获取安卓:padding attribute programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com