2013-01-04 58 views
3

我試圖讓我的佈局,看起來像這樣:大廈的LinearLayout編程

enter image description here

我包含此代碼類擴展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" /> 

使用此代碼I ge t爲Y軸標籤和出現的圖形,但X軸標籤丟失

我似乎無法得到我想要的,我嘗試過多種組合,我究竟做錯了

+0

在設計師創建佈局模板,然後在代碼中創建具有相同PARAMS和序列像設計師 –

+0

我只是去嘗試的對象,我也嘗試過用按鈕替換我的意見只是爲了看到它它給了我想要的佈局 隨着按鈕,它給了我我想要的,但我的意見沒有 –

+0

我不確定它。但是對於主線性佈局graph2,您正在使用android:layout_height =「250dp」。嘗試在scrollview中放置線性佈局。 –

回答

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); 
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); 
+0

不工作,我不知道無論是因爲圖形和標籤都是線條佈局 –

+0

,您可以使用linearLayout替換上例中的文本視圖來檢查。 –

+0

對不起,我的意思是說意見,但是我已經將textviews填入視圖中,但是我得到一個帶有此代碼的青色屏幕(水平標籤) –

1

我喜歡使用arnodenhond代碼的x軸標籤和y軸標籤。你可以從 http://android.arnodenhond.com/components

我模擬器的屏幕拍攝enter image description here

+0

我看了一下他的GraphView,它看起來很輕,我需要很多功能,使它看起來儘可能接近iPhone應用程序,它看起來像這樣:http: //postimage.org/image/ld4e8pvq9/,我不認爲這個庫允許你輕鬆地繪製背景。 –

1

嘗試設置不同的背景顏色來創建你看到他們真正的區域佈局。很可能有些佈局佔據了所有可用的高度,因此X軸標籤不在邊界。 您可能想爲佈局指定某種權重,如總權重總和爲5,爲繪圖區域分配4,並將1設置爲保存X軸標籤的佈局

2

這似乎是一個在將第一張佈局添加到父項時,它們會填滿整個區域,而其他項目現在只顯示出來。

正如其他提及,建議(我會嘗試任何一個獨立的) - 在所有內容的頂部滾動查看。 - 創建一個單獨的控件,該控件從LinearLayout及其各自的layout.xml擴展到內部。在展示這個控件時,在這個活動中只添加一個包含它們的佈局。 - 在所有內容的頂部創建一個新的LinearLayout,將所有內容添加到它,然後將其添加到實際View中。

如果有任何工作或您有解決方案發布,以便其他人可以看到並受益。

+0

我已經設法解決了我的問題,使用固定寬度而不是wrap_content,我不太喜歡它,因爲它不是一種非常乾淨的編碼方式,並且可能不完全正確,但是目前我沒有時間嘗試並實施新的建議,但我會盡快發佈,並將最好的作品歸功於其作品 –