我想以编程方式将TextView和EditView添加到我的自定义LinearLayout中。 但我不知道怎么做。 这样的事情(不起作用):
<com.custom.FavoritesViewer
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone"
android:id="@+id/favoritesViewer">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"/>
</com.custom.FavoritesViewer>
和我的自定义布局
public class FavoritesViewer extends LinearLayout {
private Bitmap fullImage;
private int canvasWidth;
private int canvasHeight;
private final Paint paint = new Paint();
public FavoritesViewer(Context context, AttributeSet attrs) {
super(context, attrs);
setWillNotDraw(false);
initializeCanvasSize(context);
}
private void initializeCanvasSize(Context context) {
final Pair<Integer, Integer> screenSize = Utils.getScreenSize(context);
canvasWidth = screenSize.first;
canvasHeight = screenSize.second;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(canvasWidth, canvasHeight / 3);
}
@Override
protected void onDraw(Canvas cvs) {
if (fullImage == null) {
fullImage = Bitmap.createBitmap(canvasWidth, canvasHeight / 3, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(fullImage);
paint.reset();
paint.setColor(Color.parseColor("#AA000000"));
canvas.drawRect(0, 0, canvasWidth, canvasHeight / 3, paint);
}
cvs.drawBitmap(fullImage, 0, 0, null);
}
}
所以我有一个画布(如背景),我想在顶部添加一些标准视图。我无法在onDraw上添加它。
是否可以将View添加到自定义布局中?
EDITTED
我需要用按钮实现一些特殊的UI。我想把它包装在一个组件中。我在画布上绘制UI,并以某种方式添加按钮(这足以让我添加简单的ImageButton,而不是绘制图像和模拟按钮的行为)。这就是我选择Layout作为容器并需要以编程方式添加Views的原因。
答案 0 :(得分:0)
只要你调用super(可能是super.onDraw()),我想父类会绘制你按预期添加的视图。看起来你只是重写onDraw,这会阻止父LinearLayout类呈现它的内容(如TextView)。
首先尝试注释掉你的onDraw方法,看看LinearLayout是否按预期运行。
此外,自定义布局的目标是什么?可能有更好的方法来实现您的目标。