我想创建一个customview,它将允许我添加图像和文本。我这样做的原因是因为在我创建的应用程序中,我一遍又一遍地重复相同的代码以实现此目的,我想尝试将它包装到自己的自定义视图中,以便我可以使用setter和position相对于彼此的视图,将所有这些代码放在一个简单的使用类中。CustomView延伸RelativeLayout
我可以添加文字视图和图像到视图,但是当我尝试将它们相对于另一个放置时,我总是得到一个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);
}
}
非常感谢你的回答这个工作出色!我会把这个标记为答案,因为你给了我非常容易阅读的完整课程! – brux
我知道这是一个古老的答案,但是,你是否有任何想法,为什么'RelativeLayout.CENTER_IN_PARENT'的规则,如果这个'MultiView'被添加到'LinearLayout'中作为父项? 因此视图层次结构变为LL> MultiView。 – nightfixed
@nightfixed我不明白你的意思。 – ramaral