2015-10-06 12 views
0

我已經成功地使用Stack Exchange和其他資源向佈局的底部添加了一個新視圖。但是,如果我嘗試以編程方式添加第二個視圖,則兩個視圖看起來重疊。如何以編程方式在佈局文件的底部添加多個視圖而不會重疊

此代碼塊成功地將新視圖添加到我的佈局文件中。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     RelativeLayout activityMain = (RelativeLayout)findViewById(R.id.activity_main); 

     // First view 
     View playControlsPanelMinimized = new View(this); 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     final float scale = activityMain.getContext().getResources().getDisplayMetrics().density; 
     float dps = 10; 
     int pixels = (int) (dps * scale + 0.5f); 
     params.height = pixels; 
     playControlsPanelMinimized.setLayoutParams(params); 
     playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF")); 
     params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     activityMain.addView(playControlsPanelMinimized); 

然而,當我通過簡單地重複用新的變量的代碼添加的第二視圖,我看到存在重疊的行爲,該我只看到第一視圖的效果。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     RelativeLayout activityMain = (RelativeLayout)findViewById(R.id.activity_main); 

     // First view 
     View playControlsPanelMinimized = new View(this); 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     final float scale = activityMain.getContext().getResources().getDisplayMetrics().density; 
     float dps = 10; 
     int pixels = (int) (dps * scale + 0.5f); 
     params.height = pixels; 
     playControlsPanelMinimized.setLayoutParams(params); 
     playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF")); 
     params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     activityMain.addView(playControlsPanelMinimized); 

     // Second View 
     View playControlsPanelMinimized2 = new View(this); 
     RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     final float scale2 = activityMain.getContext().getResources().getDisplayMetrics().density; 
     float dps2 = 10; 
     int pixels2 = (int) (dps2 * scale2 + 0.5f); 
     params2.height = pixels2; 
     playControlsPanelMinimized2.setLayoutParams(params2); 
     playControlsPanelMinimized2.setBackgroundColor(Color.parseColor("#00FFFF")); 
     params2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     activityMain.addView(playControlsPanelMinimized2); 

編輯:

我改變activity_main.xml到LinearLaout,並相應地調整我的變量,但現在我再也看不到的景色。

 LinearLayout activityMain = (LinearLayout)findViewById(R.id.activity_main); 

     // First View 
     View playControlsPanelMinimized = new View(this); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     final float scale = activityMain.getContext().getResources().getDisplayMetrics().density; 
     float dps = 10; 
     int pixels = (int) (dps * scale + 0.5f); 
     params.height = pixels; 
     playControlsPanelMinimized.setLayoutParams(params); 
     playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF")); 
     //params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     activityMain.addView(playControlsPanelMinimized); 

編輯

我想相對佈局方法的新技術無濟於事作爲尚未

View playControlsPanelMinimized = new LinearLayout(this); 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     final float scale = activityMain.getContext().getResources().getDisplayMetrics().density; 
     float dps = 10; 
     int pixels = (int) (dps * scale + 0.5f); 
     params.height = pixels; 
     playControlsPanelMinimized.setLayoutParams(params); 
     playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF")); 
     params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     activityMain.addView(playControlsPanelMinimized); 

     View A = new View(this); 
     View B = new View(this); 
     RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     A.setLayoutParams(params2); 
     B.setLayoutParams(params2); 

     playControlsPanelMinimized.addView(A); 
     playControlsPanelMinimized.addView(B); 

回答

0

替換的LinearLayout你的RelativeLayout activity_main具有方向水平或垂直

+0

看看我的新的問題[這裏](http://stackoverflow.com/questions/32981371/setting-view-object-parameters-height-and-width-crashes-app-with-null-referenc) –

0
  • 使用lnearLayout而不是Re lative佈局,可能是你需要使用weightsum 設置方向到其他視圖的垂直/水平
  • 看跌觀點的權利,並將其設置在XML。
+0

看到我的新問題[這裏](http://stackoverflow.com/questions/32981371/setting-view-object-parameters-height-and-width-crashes-app-with-null-referenc) –

相關問題