2010-12-20 10 views
2

次のコードを作成して、キャンバスを使用して棒グラフと円グラフを作成します。ここでAndroidのスクロールビューにビューを追加する方法は?

は私のコード

public class ChartDemo extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //ScrollView sv = new ScrollView(this); 

    LinearLayout llay = new LinearLayout(this); 
    llay.setOrientation(LinearLayout.VERTICAL); 

    float[] values = { 50, 100, 50, 20, 30, 60, 100, 90 }; 

    // Bar Chart 
    BarGraph BarChart = new BarGraph(this, values); 
    llay.addView(BarChart); 

    //Pie Chart 
    PieChartView Pie = new PieChartView(this, values); 
    llay.addView(Pie); 

    //sv.addView(llay); 

    setContentView(llay); 
    //setContentView(sv); 
    } 
} 

上記のコードであるだけBarChartコントロールを示しています。 私はそれが黒(空白)画面only.With出ていないエラーや例外

public class ChartDemo extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ScrollView sv = new ScrollView(this); 

    LinearLayout llay = new LinearLayout(this); 
    llay.setOrientation(LinearLayout.VERTICAL); 

    float[] values = { 50, 100, 50, 20, 30, 60, 100, 90 }; 

    // Bar Chart 
    BarGraph BarChart = new BarGraph(this, values); 
    llay.addView(BarChart); 

    //Pie Chart 
    PieChartView Pie = new PieChartView(this, values); 
    llay.addView(Pie); 

    sv.addView(llay); 

    setContentView(sv); 
    } 
} 

を与えると私は私がする必要がある、次の

public class PieChartView extends View { 

private float[] Values; 

public PieChartView(Context context, float[] Values) { 
    super(context); 

    this.Values = Values; 

} 

protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

       ....... 
       ......... 

     } 


} 

のように私のチャート・ビューを作成するには、次のように私のコードを変更します両方のチャートをスクロールビューのシングルスクリーンに追加します。しかし、私は単一のActivity.Howで両方を追加することはできませんこれを行うには?

+0

"できない"ということをもう少し詳しく説明できますか?何かエラーが出るのですか、まったく表示されないのですか? – Juhani

+0

LinearLayoutをScrollViewに追加すると、黒い画面しか表示されません。sv.addView(llay); setContentView(sv); –

答えて

4

あなたがプログラムで、いくつかのレイアウトにビュー(でframeLayoutから派生)のLinearLayoutまたはScrollViewのように、あなたはあなたの意見にレイアウトパラメータを設定する必要があり、このようなもの(単なる例)を追加します。

BarGraph BarChart = new BarGraph(this, values); 
// be sure to use correct layout params for your layout 
LinearLayout.LayoutParams llp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
llp.weight = 1.0f; 
BarChart.setLayoutParams(llp); 
llay.addView(BarChart); 

FrameLayout.LayoutParams flp = new /* ... */; 
llay.setLayoutParams(flp); 

sv.addView(llay); 

場合それらを設定しないと、レイアウトに応じてデフォルトのものが取得され、追加されたビューに応じてジョブを実行するかどうかが決まります。 (通常はJava変数の名前は小文字で始まります)

関連する問題