New UI-純Java代碼載入布局,newui-java布局
New UI-純Java代碼載入布局
——轉載請註明出處:coder-pig,歡迎轉載,請勿用於商業用途!
小豬Android開發交流群已建立,歡迎大家加入,無論是新手,菜鳥,大神都可以,小豬一個人的
力量畢竟是有限的,寫出來的東西肯定會有很多紕漏不足,歡迎大家指出,集思廣益,讓小豬的博文
更加的詳盡,幫到更多的人,O(∩_∩)O謝謝!
小豬Android開發交流群:小豬Android開發交流群群號:421858269
新Android UI執行個體大全目錄:http://blog.csdn.net/coder_pig/article/details/42145907
本節引言:
我們早已習慣了使用XML產生我們需要的布局,但是在一些特定的情況下,我們
需要使用Java代碼往我們的布局中動態添加組件或者布局!本節我們就來學最簡單的
使用Java代碼來編寫我們的整個介面吧!
ps:其實是不建議大家完全地使用Java代碼來編寫Android的介面布局了,首先一點就是
代碼會多,而且容易亂,而且不利於業務的分離,我們還是建議使用xml來完成布局,然後
通過Java代碼對裡面的組件進行修改,當然,有些時候可能需要使用Java動態地來添加
組件,但是還是不建議說用Java代碼來直接寫布局,你還得考慮看代碼的人的感受嘛~
本節本文:
如題,純Java代碼載入布局非常簡單,流程無非以下幾個:
step 1:
①建立容器:LinearLayout ly = new LinearLayout(this);
②建立組件:Button btnOne = new Button(this);
step 2:
接著可以為容器或者組件設定相關屬性:
比如LinearLayout,我們可以設定組件的排列方向:ly.setOrientation(LinearLayout.VERTICAL);
而組件也可以,比如Button我們可以為其設定顯示文字:btnOne.setText("按鈕1");
關於設定屬性的方法可參見Android 的API,通常xml設定的屬性只需在前面添加:set即可,比如
SetPadding(左,上,右,下);
step 3:
將組件或容器添加到容器中,這個時候我們可能需要設定下組件的添加位置,或者設定他的大小:
我們需要用到一個類:LayoutParams,我們可以把它看成版面配置容器的一個資訊包!封裝位置與大小
等資訊的一個類!先示範下設定大小的方法:(前面的LinearLayout可以根據不同容器變更)
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
很簡單,接著就到這個
設定位置了,設定位置的話,通常我們考慮的只是RelativeLayout!
這個時候用到LayoutParams的addRule( )方法!可以添加多個addRule( )哦!
設定組件在父容器中的位置:
比如設定組件的對其方式:
RelativeLayout rly = new RelativeLayout(this);RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);lp2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);Button btnOne = new Button(this);rly.addView(btnOne, lp2);
參照其他組件的對其方式:(有個缺點,就是要為參考組件
手動設定一個id,是手動!!!!)
比如:設定btnOne置中後,讓BtnTwo位於btnOne的下方以及父容器的右邊!代碼如下:
package com.jay.example.trendsinflateviewdemo;import android.app.Activity;import android.os.Bundle;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.LinearLayout;import android.widget.RelativeLayout;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);RelativeLayout rly = new RelativeLayout(this);Button btnOne = new Button(this);btnOne.setText("按鈕1");Button btnTwo = new Button(this);btnTwo.setText("按鈕2");// 為按鈕1設定一個id值btnOne.setId(123);// 設定按鈕1的位置,在父容器中置中RelativeLayout.LayoutParams rlp1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);rlp1.addRule(RelativeLayout.CENTER_IN_PARENT);// 設定按鈕2的位置,在按鈕1的下方,並且對齊父容器右面RelativeLayout.LayoutParams rlp2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);rlp2.addRule(RelativeLayout.BELOW, 123);rlp2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);// 將組件添加到外部容器中rly.addView(btnTwo, rlp2);rly.addView(btnOne, rlp1);// 設定當前視圖載入的View即rlysetContentView(rly);}}
step 4:
調用setContentView( )方法載入布局對象即可!
另外,如果你想移除某個容器中的View,可以調用容器.removeView(要移除的組件);
運行:
好了,關於使用純Java代碼載入布局的內容就講到這裡,謝謝大家~