이미지와 텍스트를 추가 할 수있는 customview를 만들려고합니다. 내가이 일을하는 이유는 내가 만들고있는 중이기 때문에이 코드를 반복하기 위해 동일한 코드를 반복하고 있기 때문에 나는 그것을 자신의 커스텀 뷰로 감싸고 싶다. 그래서 나는 setter와 position을 사용할 수있다. 뷰를 서로에 상대적으로 배치하여이 코드를 모두 하나의 클래스에 간단하게 배치합니다.CustomView extends 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
이 답변은 오래된 답변입니다. 그러나이'MultiView'가'LinearLayout' 내부에 부모로 추가되면'RelativeLayout.CENTER_IN_PARENT'에 대한 규칙이 무엇인지 알고 계십니까? 보기 계층 구조가 LL> MultiView가됩니다. – nightfixed
@nightfixed 무슨 뜻인지 이해가 안됩니다. – ramaral