画形状?

Drawing a shape?

我画了很久都没有答案。我为该视图使用了 setContentView(view)。但是,我有另一个 setContentView:

setContentView(R.layout.activity_main);//Buttons, Views from XML...
setContentView( mCustomDrawableView);//Custom Shape

问题是,它只显示 ONE 视图,形状。 XML 上定义的 Buttons 消失了。基本上最后调用的 setContentView(view) 是唯一被抽取的 View。我还尝试了 许多 其他方法来绘制形状,但没有 有效 .

的答案

我已经看到多个 setContentView 确实相互重叠,但这是 部分 工作的唯一方式。任何显示视图的方法 另一种绘制形状和我的方法 XML Views?

编辑:

我的造型是在java,而不是XML

编辑 2:

这是我的 customShape Class:

 public class CustomDrawableView extends View {
    private ShapeDrawable mDrawable;

    public CustomDrawableView(Context context) {
        super(context);

        int x = 10;
        int y = 10;


        mDrawable = new ShapeDrawable(new RectShape());
        // If the color isn't set, the shape uses black as the default.
        mDrawable.getPaint().setColor(0xff74AC23);
       mDrawable.setBounds(x,y,x+10,y+10);
    }

    protected void onDraw(Canvas canvas) {
        mDrawable.draw(canvas);
    }
}

OK ... setContentView 是一个需要 layout/view/whatever 的东西,输入定义了您要设置的 activity/fragment 的内容。

所以您的第一个调用当然会完成整个布局,第二个调用会擦除它并将内容设置为您要发送给它的内容。

重要的是拥有您的视图,然后将其添加到布局中。如果您在初始 setContentView xml 中有任何视图命名为 (+id) 并定义 (Layout x = getfromid(r.id.x) 然后您可以使用 x.addview(myview ) 或 x.addview(CustomDrawableView(context)).

-编辑澄清-

Activity/Fragment 具有您使用 setContentView 设置的布局。你这样做一次,通常。布局定义放置视图的位置。

因此,您在 onCreate 中设置了 ContentView(your.xml)。如果你有一个编程视图 class,那么你可以做两件事:将新的 YourView 添加到你的 act/frag 中指定的命名布局(使用 xml 中定义的任何布局,传递给你的xml中的frag/act传入setContentView,然后在代码中通过Layout x = findViewById(R.id.idoflayoutinxmlinfield 'android:id="@+id/x")定义.

然后你可以 x.addview(new MyView(context)) 或 Myview z = new MyView(context) and x.addView(z);

-edit2-

当你变得更好时,你也可以将自定义视图添加到原始布局中,方法是将其添加到原始 xml 定义中。

-edit3-

唉。好的。这是:

在您的活动 java 文件中:

RelativeLayout myRellayout;

@Override
public void onCreate(){
    setContenView(your.xml)
    myRelLayout = findViewByID(R.id.myrellayout);
    myRelLayout.addView(new MyCustomView(this));
    //or define your custom view and the add it by:
    //MyCustomView mcv = new MyCustomView(this);
    //myRelLayout.addView(mcv);
}

你的 xml 应该包含这样的布局:

<RelativeLayout
    android:id="@+id/myrellayout"
    android:width="whatever"
    android:height="whatever"
    />