我有一个扩展View的自定义类。我希望在这个类中有一个imageview,它应该是View的大小,所以当我将View添加到一个布局时,它会显示View的imageview。 我的问题是,我无法改变imageview的大小。
public class CustomView extends View{
ImageView imageView;
public CustomView(Context context, float ivSize) {
super(context);
imageView = new ImageView(context);
//change size of imageView here
}
我尝试了什么:
LinearLayout.LayoutParams imgvwDimens =
new LinearLayout.LayoutParams((int)ivSize, (int)ivSize);
imageView.setLayoutParams(imgvwDimens);
什么也没有
android.view.ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
layoutParams.width = (int)ivSize;
layoutParams.height = (int)ivSize;
imageView.setLayoutParams(layoutParams);
-nullpointer for layoutParams.width& layoutParams.height
imageView.setLayoutParams(new LayoutParams((int)ivSize, (int)ivSize));
什么也没有
imageView.requestLayout();
imageView.getLayoutParams().height = (int)ivSize;
imageView.getLayoutParams().width = (int)ivSize;
-nullpointer for .width& .height
我知道可能还没有params,因为我没有使用xml的imageview,但这只解释了案例2和4.我不明白为什么1和3什么也不做,我不知道是什么否则我可以试试。 我错过了什么?
编辑:解决方案
现在使用,我扩展了RelativeLayout而不是View,在构造函数中添加了imageView,如下所示:
this.addView(imageView);
并实施
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
imageView.layout(0, 0, ivSize, ivSize);
}
谢谢你们!
答案 0 :(得分:1)
如果要包含另一个视图,则需要创建自定义ViewGroup而不是自定义视图。通常,如果执行此操作,则延伸RelativeLayout或LinearLayout,以便编写所有布局代码,并设置相应类型的LayoutParams。您还必须通过addView
将ImageView添加到自定义ViewGroup