我正在尝试创建一个customview,它将允许我添加图像和文本。我这样做的原因是因为在我创建的应用程序中,我要一遍又一遍地重复相同的代码以实现此目的,并且我想尝试将其包装到其自己的自定义视图中,以便仅使用设置器和位置相对于彼此的视图,将所有这些代码放在一个易于使用的类中。

我可以在视图中添加文本视图和图像视图,但是当我尝试将它们彼此相对放置时,总是会发生NPE崩溃。

这是我到目前为止的代码,它只是添加了一个TextView,然后尝试将TextView居中于我的自定义视图中。

public class MultiView extends RelativeLayout {
    Context cx;
    int images = 0;

    public MultiView(Context context) {

        super(context);
        cx = context;
    }

    public void addText(String textParam) {

        TextView tv = new TextView(cx);

        tv.setText(textParam);

        tv.setTextColor(Color.WHITE);

        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) tv
                .getLayoutParams();

        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);

//      tv.setLayoutParams(layoutParams); // the app crashes when I add this line

        this.addView(tv);
    }

}

最佳答案

全班:

public class MultiView extends RelativeLayout {
    Context cx;
    int images = 0;

    public MultiView(Context context) {

        super(context);
        cx = context;
    }

    public void addText(String textParam) {

        RelativeLayout.LayoutParams layoutParams =
        new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);


        TextView tv = new TextView(cx);
        tv.setText(textParam);
        tv.setTextColor(Color.WHITE);
        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
        tv.setLayoutParams(layoutParams);
        this.addView(tv);
    }

}

关于android - CustomView扩展RelativeLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19715326/

10-12 02:52