2010-06-03 42 views
2

我需要以編程方式創建兩個視圖(因爲我需要訪問其中一個視圖的ondraw)。出於某種原因,無論我如何將視圖添加到contentview,它們都不會顯示爲垂直堆疊,一個在另一個之下。幫助Android的LinearLayout或RelativeLayout

我可以做到這一點,使用XML使用RelativeLayout和佈局定位,但與XML我不能創建一個視圖對象和超載的ondraw方法。

我在做什麼錯誤的編程方法,我該如何解決這個問題?

LinearLayout mLinearLayout; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Create a LinearLayout in which to add the ImageView 
     mLinearLayout = new LinearLayout(this); 

     TextView tv = new TextView(this); 
      tv.setBackgroundColor(0xff333333); 
     tv.setText("Enter your member number:"); 
     tv.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 



     DrawableView i = new DrawableView(this); 
     i.layout(0,40,0,0); 
     i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 

     mLinearLayout.addView(tv); 
     mLinearLayout.addView(i,300,300); 
     setContentView(mLinearLayout); 
    } 

回答

1

可以線性佈局對象的方向設置爲垂直

1

有似乎有兩個問題,雖然這是很難調試代碼比XML。

首先,未能將線性佈局的方向設置爲垂直。對於水平方向,一切都將是一條線。對於垂直佈局,每個小部件將從頂部到底部分開。

其次,「填寫家長」看起來很可疑。任何填充父項,除非相對佈局或絕對大小限制阻止它,接管所有內容並隱藏所有其他小部件。這幾乎總是錯誤的解決方案。嘗試使用體重代替。

您可能會首先考慮如何在XML中準確獲取這些內容,然後將其轉換爲編程設置,並儘可能保持機械轉換。祝你好運!

1

你有沒有嘗試設置佈局方向上,以verticcal:

mLinearLayout.setOrientation(1);

+0

問題解決了,非常感謝! – PeEll 2010-06-03 11:16:02

+1

@PeEll:如果修復了這個問題,您可能需要將此標記爲給予Suresh信用的正確答案。這就是說,我強烈建議使用mLinearLayout.setOrientation(VERTICAL)而不是mLinearLayout.setOrientation(1)。這會改善你的代碼的可讀性。 – 2010-06-03 12:54:28