2

チャートのような構造を実装したい。

棒グラフの場合、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値に基づいて棒グラフの高さを動的に変更する必要があることに注意してください。

4

2 に答える 2

4

棒グラフのレイアウトに xml を使用している場合は、次のように新しく作成したビューをそこに含めることができます。

<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

于 2012-09-26T06:16:15.093 に答える
1

あなたの質問に答えるために、Drawビューを棒グラフ レイアウトと同じレイアウト (おそらく a) に含めてFrameLayout、コンテンツ ビューを 2 回設定しないようにすることができます。

ただし、グラフ作成アプリケーションのボタンの使用はハックのように見えます。Canvas軸を描くのと同じように棒グラフを描くことも考えられます。

于 2012-09-26T06:12:06.170 に答える