Android:Parse acquireStyledAttributes CardView cardElevation

时间:2016-05-09 01:32:29

标签: android

如何以编程方式解析cardElevation xml属性?我尝试过以下无效:

int elevation = getDimension(context, attrs, new int[]{android.support.v7.cardview.R.styleable.CardView_cardElevation});   
int elevation = getDimension(context, attrs, new int[]{android.support.v7.cardview.R.attr.cardElevation});

private int getDimension(Context context, AttributeSet attrs, int[] systemAttrs) {
   TypedArray a = context.obtainStyledAttributes(attrs, systemAttrs);    
   int dimension = a.getDimension(0, 0);    
   a.recycle();     
   return dimension; // all return 0
}

xml:

<android.support.v7.widget.CardView
    ...
    app:cardElevation="2dp">

1 个答案:

答案 0 :(得分:0)

我自己需要这个。

String elevation = attrs.getAttributeValue("http://schemas.android.com/apk/res-auto", "cardElevation");

请注意,海拔以String的形式返回,例如“ 4.0dip”。

还有另一种方法

typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.CardView);
float elevation = typedArray.getDimension(R.styleable.CardView_cardElevation, 0);

但是,请注意,getDimension()方法会将dp,sp值转换为像素值。