Я в значительной степени следую примеру, найденному в: http://developer.android.com/guide/topics/graphics/2d-graphics.html#shape-drawable
public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;
public CustomDrawableView(Context context, AttributeSet attr) {
super(context, attr);
int x = 10;
int y = 10;
int width = 300;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
// XML snippet where I am using this custom view
<com.example.shapedrawable.CustomDrawableView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Я на самом деле использую это в ListView, поэтому он становится раздутым в методе getView моего адаптера (я знаю, что это работает, потому что этовыглядит отлично для нестандартных представлений).
Я заметил, что если я не укажу значение "dp" для layout_width и layout_height, он не будет отрисовываться.Однако, если я использую что-то произвольное, например, 500dp для layout_width и layout_height, то оно появляется!Я очень озадачен - почему он не использует измерения высоты / ширины, которые я указываю в коде, когда я использую wrap_content?