gpt4 book ai didi

android - CustomView 扩展 RelativeLayout

转载 作者:行者123 更新时间:2023-11-29 16:05:03 26 4
gpt4 key购买 nike

我正在尝试创建一个允许我添加图像和文本的自定义 View 。我这样做的原因是因为在我创建的应用程序中,我一遍又一遍地重复相同的代码以实现这一点,我想尝试将它包装到自己的自定义 View 中,这样我就可以只使用 setter 和位置相对于彼此的 View ,将所有这些代码放在一个简单易用的类中。

我可以向 View 添加 TextView 和 ImageView ,但是当我尝试将它们相对于彼此定位时,我总是会遇到 NPE 崩溃。

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com