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 扩展,其各自的 layout.xml 只是在内部膨胀。在这个 Activity 上显示时,只需实例化这个控件并添加一个包含所有这些的布局。- 在所有内容之上创建一个新的 LinearLayout,将所有内容添加到其中,然后将其添加到实际视图中。

如果有任何工作或您有解决方案,请将其发布,以便其他人可以看到并从中受益。

于 2013-01-11T01:55:58.123 回答
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

尝试为您创建的布局设置不同的背景颜色以查看其真实区域。很可能某些布局占据了所有可用高度,因此 X 轴标签超出了边界。您可能希望为布局分配某种权重,例如总权重总和为 5,为绘图区域分配 4,并将 1 设置为包含 X 轴标签的布局

于 2013-01-10T20:32:50.413 回答
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 回答