チャートのような構造を実装したい。
棒グラフの場合、no を使用しています。私の主なアクティビティのボタンの数、したがって出力は次のとおりです。
View
次に、次のようにキャンバスを使用してグラフの 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);
}
}
しかし、問題は、主なアクティビティで次のコード行を使用した後です。
Draw draw = new Draw(this);
setContentView(draw);
ContentView
再度設定すると、次の出力が得られます。
だから私の質問は、以下の出力を得るためにこれらの両方のビューをどのように統合するかです:
同じことを行う他の方法はありますか?
どんな助けでも感謝します。
編集
さまざまな提案に基づいて、削除しました
Draw draw = new Draw(this);
setContentView(draw);
私の活動クラスから、代わりにこれらの行をメインの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
コンストラクターに追加することで、目的の結果が得られました。
しかし、キャンバスのボタンまたは長方形を使用して棒グラフを描画する必要があるかどうかを誰でも提案できますか?
seekbar
値に基づいて棒グラフの高さを動的に変更する必要があることに注意してください。