3

レイアウトを次のようにしようとしています。

ここに画像の説明を入力

このコードを含む私のクラスは Linelayout 自体を拡張し、addView でさまざまな要素を追加します

    setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        LinearLayout line = new LinearLayout(context);
    line.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    viewVerLabels = new VerLabelsView(context);

            // add y axis linearlayout & graphview
    line.addView(viewVerLabels);
    line.addView(new GraphViewContentView(context), new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1));
    line.setOrientation(LinearLayout.HORIZONTAL);

            // add to main linearlayout
    addView(line);

    LinearLayout line2 = new LinearLayout(context);
    line2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    viewHorLabels = new HorLabelsView(context);
    setOrientation(LinearLayout.VERTICAL);
            // add x axis labels
    line2.addView(viewHorLabels);
            // add to main linearlayout
    addView(line2);

私のXMLファイル

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/graph2"
    android:layout_width="fill_parent"
    android:layout_height="250dp"
    android:orientation="vertical" />

このコードを使用すると、Y 軸のラベルとグラフが表示されますが、X 軸のラベルがありません

欲しいものを手に入れられないようです。いくつかの組み合わせを試しましたが、何が間違っていますか

4

5 に答える 5

2

これは、最初のレイアウトを親に追加すると、領域全体がいっぱいになり、他のレイアウトが表示されるというサイズの問題のようです。

他の言及として、推奨事項(私はどちらかを独立して試してみます) - すべての上にあるスクロールビュー。- LinearLayout から拡張する個別の Control を作成し、内部で膨張するそれぞれの layout.xml を使用します。このアクティビティで、表示時にこのコントロールをインスタンス化し、それらすべてを持つレイアウトを 1 つだけ追加します。- すべての上に新しい LinearLayout を作成し、それにすべてを追加してから、それを実際のビューに追加します。

作業や解決策があれば投稿して、他の人が見て利益を得ることができるようにします。

于 2013-01-11T01:55:58.123 に答える
1

作成したレイアウトに異なる背景色を設定して、実際の領域を確認してください。ほとんどの場合、一部のレイアウトは使用可能なすべての高さを占めているため、X軸のラベルは境界線から外れています。合計の重みの合計を5として、描画領域に4を割り当て、X軸ラベルを保持するレイアウトに1を設定するなど、レイアウトに何らかの重みを割り当てることができます。

于 2013-01-10T20:32:50.413 に答える
1

こんにちは、いくつかの値、ビュー、および setBackground を色に変更したこのコードを試してみてください。希望どおりの出力が得られます。

LinearLayout MLayoutTm = (LinearLayout) findViewById(R.id.graph2);

    LinearLayout line = new LinearLayout(this);
    line.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 0, 1));
    line.setBackgroundColor(Color.BLUE);
    TextView viewVerLabels = new TextView(this);

    viewVerLabels.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
    viewVerLabels.setText("Nimsih");
    viewVerLabels.setBackgroundColor(Color.RED);
    line.addView(viewVerLabels);

    TextView GraphViewContentView = new TextView(this);
    GraphViewContentView.setBackgroundColor(Color.MAGENTA);
    GraphViewContentView.setText("Nimsih2");
    GraphViewContentView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.MATCH_PARENT, 1));
    line.addView(GraphViewContentView);

    line.setOrientation(LinearLayout.HORIZONTAL);

    MLayoutTm.addView(line);

    LinearLayout line2 = new LinearLayout(this);
    line2.setBackgroundColor(Color.RED);
    line2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

    TextView viewHorLabels = new TextView(this);
    viewHorLabels.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
            1));
    viewHorLabels.setBackgroundColor(Color.CYAN);
    viewHorLabels.setText("Nimsih3 ");

    MLayoutTm.setOrientation(LinearLayout.VERTICAL);
    line2.addView(viewHorLabels);

    MLayoutTm.addView(line2);
于 2013-01-04T12:05:26.213 に答える
1

私は、arnodenhond のコードを使用して、x 軸ラベルと y 軸ラベルを作成しています。http://android.arnodenhond.com/componentsから取得できます

私のエミュレータのスクリーンショットここに画像の説明を入力

于 2013-01-10T05:19:17.927 に答える
1

これが私のコードで、問題を回避することができました

        graphViewStyle = new GraphViewStyle();
        paint = new Paint();
        graphSeries = new ArrayList<GraphViewSeries>();

        setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        setOrientation(LinearLayout.VERTICAL);

        LinearLayout line = new LinearLayout(context);
        line.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        line.setOrientation(LinearLayout.HORIZONTAL);

        LinearLayout line2 = new LinearLayout(context);
        line2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        line2.setOrientation(LinearLayout.HORIZONTAL);

        txt = new TextView(mContext);
        addView(txt);

        GraphViewContentView graphContentView = new GraphViewContentView(context);
        graphContentView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 260, 1));
        line.addView(graphContentView);
        viewVerLabels = new VerLabelsView(context);
        viewVerLabels.setLayoutParams(new LayoutParams(30, 260));
        viewHorLabels = new HorLabelsView(context);
        viewHorLabels.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 15));

        line.addView(viewVerLabels);

        addView(line);

        line2.addView(viewHorLabels);
        TextView v = new TextView(context);
        v.setLayoutParams(new LayoutParams(30, 15));
        line2.addView(v);

        addView(line2);
于 2013-01-14T12:17:08.183 に答える