gpt4 book ai didi

android - 使用 setcontentview 两次

转载 作者:搜寻专家 更新时间:2023-11-01 07:35:04 24 4
gpt4 key购买 nike

我想实现类似图表的结构。

对于条形图,我使用的是 no。 在我的主要 Activity 中的按钮,因此输出如下:

screenshot


然后我正在创建扩展 View 的新类,以便使用 Canvas 为图形绘制 x 轴和 y 轴,如下所示:

public class Draw extends View {

Paint paint = new Paint();

public Draw(Context context) {
super(context);
paint.setColor(Color.BLACK);
}

@Override
public void onDraw(Canvas canvas) {

canvas.drawLine(20, 50, 20, 200, paint);
canvas.drawLine(20, 200, 200, 200, paint);
}
}

但问题是,在我的主要 Activity 中使用了以下代码行之后:

Draw draw = new Draw(this);
setContentView(draw);

我再次设置 ContentView 时得到以下输出:

screenshot


所以我的问题是如何整合这两个 View 以获得以下输出:

screenshot

还有其他方法可以做同样的事情吗?
感谢任何帮助。

编辑

根据各种建议,我删除了

Draw draw = new Draw(this);
setContentView(draw);

来 self 的 Activity 类,而是将这些行放在主 xml 布局中。

<com.example.calci.Draw 
android:id="@+id/draw"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

但我得到了以下EXCEPTION:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.calci/com.example.calci.CalciActivity}: android.view.InflateException: Binary XML file line #468: Error inflating class com.example.calci.Draw

Caused by: java.lang.NoSuchMethodException: Draw(Context,AttributeSet)
at java.lang.Class.getMatchingConstructor(Class.java:643)
at java.lang.Class.getConstructor(Class.java:472)
at android.view.LayoutInflater.createView(LayoutInflater.java:480)

编辑2

通过将 AttributeSet attributeSet 添加到构造函数中,我得到了想要的结果。

但是谁能建议我应该使用 Canvas 中的按钮还是矩形来绘制条形图。

请注意,我需要根据 seekbar 值动态修改条形图的高度。

最佳答案

如果您使用 xml 进行条形图布局,您可以像这样在其中包含新创建的 View :

<view
class="your.package.name.ProjectName$NameOfYourClass"
id="@+id/draw"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

关于使用自定义组件的更多信息:http://developer.android.com/guide/topics/ui/custom-components.html

关于android - 使用 setcontentview 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12595490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com