我在Android中进行自定义视图。它是LinearLayout中2个TextView的简单组合。
CKEDITOR.replace('editor1', {
on: {
instanceReady: function(evt) {
document.getElementById('board').style.visibility = 'hidden';
}
}
});
我的自定义类如下:
__________________________________
|TextView |TextView |
----------------------------------
}
这是我的attr集:
public class Label extends View {
private TextView label, display;
LinearLayout layout;
public Label(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.getTheme().obtainStyledAttributes(
attrs,
R.styleable.Label,
0,0
);
try{
layout = new LinearLayout(context);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT
);
layout.setPadding(4,4,4,4);
layout.setLayoutParams(params);
layout.setOrientation(LinearLayout.VERTICAL);
label = new TextView(context);
label.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
display = new TextView(context);
display.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
label.setText(a.getString(R.styleable.Label_label_text));
display.setText(a.getString(R.styleable.Label_display_text));
layout.addView(label);
layout.addView(display);
}finally{
a.recycle();
}
}
public void setDisplay(String displayText){
display.setText(displayText);
invalidate();
requestLayout();
}
public void setLabel(String labelText){
label.setText(labelText);
invalidate();
requestLayout();
}
这就是我添加它的方式:
<resources>
<declare-styleable name="Label">
<attr name="label_text" format="string"/>
<attr name="display_text" format="string"/>
<attr name="drawable" format="color"/>
<attr name="label_position" format="enum">
<enum name="left" value="-1"/>
<enum name="center" value ="0"/>
<enum name="right" value="1"/>
</attr>
<attr name="display_position" format="enum">
<enum name="left" value="-1"/>
<enum name="center" value ="0"/>
<enum name="right" value="1"/>
</attr>
</declare-styleable>
</resources>
但是在预览屏幕上我什么都看不到。这不是画画。当我启动应用程序时,它什么也没显示。我错过了什么?
答案 0 :(得分:2)
您的LinearLayout与自定义视图无关。您只需在自定义视图的构造函数中创建LinearLayout,但不要将它们绑定在一起。您应该扩展LinearLayout而不是View,因为这是您的父视图。然后使用this.addView()而不是使用layout.addView()。如果你不设法这样做,请告诉我。