画形状?
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"
/>
我画了很久都没有答案。我为该视图使用了 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"
/>