我有一个自定义的xml组件,写成这样:
如何在代码中获取xml定义的scaleType并将其设置到imageView上?
<com.app.components.CustomComponent
android:id="@+id/component"
android:layout_width="96dp"
android:layout_height="96dp"
android:scaleType="fitCenter"/>
属性:
<declare-styleable name="CustomComponent">
<attr name="android:scaleType"/>
</declare-styleable>
我的自定义组件构造函数如下:
@Bind(R.id.imageView) ImageView imageView;
@Bind(R.id.progressBar) ProgressBar progressBar;
public CustomComponent(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FunGuideImageView, 0, 0);
// how to correctly get scale type defined in xml ?
int scaleType = a.getValue(R.styleable.CustomComponent_android_scaleType,
ImageView.ScaleType);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.imageview, this, true);
ButterKnife.bind(view);
imageView.setScaleType( scaleType );
}
如何在代码中获取xml定义的scaleType并将其设置到imageView上?
CustomComponent
应该继承View
,不是吗? - OneCricketeerImageView
,那么您可以简单地使用getScaleType()
方法。否则,我认为将您的样式属性命名为与android:
属性相同的名称并不是一个好主意。 - OneCricketeer