我试图让我的布局看起来像这样:
我的包含此代码的类扩展了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轴标签
我似乎无法得到我想要的东西,我尝试了几种组合,我做错了什么
答案 0 :(得分:2)
这似乎是一个尺寸问题,当将第一个布局添加到父级时,它们会填满整个区域,而其他区域现在只显示。
正如其他提及,建议(我会尝试独立) - 滚动视图在所有内容的顶部。 - 创建一个单独的Control,它从LinearLayout扩展,其各自的layout.xml只是在里面膨胀。而在此Activity上显示只是实例化此控件并添加一个包含所有控件的布局。 - 在所有内容之上创建一个新的LinearLayout,将其全部添加到其中,然后将其添加到实际的视图中。
如果有任何工作,或者你有解决方案,那么其他人就可以看到并受益。
答案 1 :(得分: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);
答案 2 :(得分:1)
我通过使用arnodenhond代码实现x轴标签和y轴标签。你可以得到 http://android.arnodenhond.com/components
我的模拟器屏幕截图
答案 3 :(得分:1)
尝试为您创建的布局设置不同的背景颜色,以查看其真实区域。很可能一些布局占用了所有可用高度,因此X轴标签超出边界。 您可能希望为布局指定某种权重,例如总权重总和为5,为绘图区域指定4,将1设置为包含X轴标签的布局
答案 4 :(得分: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);