繁体   English   中英

在Android的自定义视图中将大小和位置设置为imageview

[英]Set size and position to imageview in custom view in Android

我有一个扩展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);

-用于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用于.width和.height

我知道可能还没有参数,因为我没有使用来自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);
}

多谢你们!

如果要包含另一个视图,则需要创建一个自定义ViewGroup而不是一个自定义视图。 通常,如果执行此操作,则可以扩展RelativeLayout或LinearLayout,因此将编写所有布局代码,并设置适当的LayoutParams类型。 您还必须通过addView将ImageView添加到自定义ViewGroup中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM