生活随笔
收集整理的這篇文章主要介紹了
android: 静态XML和动态加载XML混合使用,以及重写Layout控件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
近期對android里面控件修改做了很多實驗,由于公司需求很多,不得不重寫很多控件。程序目標無非是:高效、輕巧、清晰、標準化
?
完成動態(tài)加載Layout有兩種方法,依據(jù)個人喜好進行選擇:
?
方法1:靜態(tài)主Layout動態(tài)加載靜態(tài)子Layout
?
首先構(gòu)建子Layout:main2
[xhtml]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>?? ?? <LinearLayout??xmlns:android="http://schemas.android.com/apk/res/android"?? ????android:id="@+id/menubar"??? ????android:background="@drawable/menubar"?? ????android:layout_width="wrap_content"??? ????android:layout_height="wrap_content">?? ?????????? ????<ImageButton?android:id="@+id/button1"?? ????????android:src="@drawable/btn1"?? ????????android:layout_width="wrap_content"?? ????????android:layout_height="wrap_content"?? ????></ImageButton>?? ?????? ????<ImageButton?android:id="@+id/button2"?? ????????android:src="@drawable/btn2"?? ????????android:layout_width="wrap_content"?? ????????android:layout_height="wrap_content"?? ????></ImageButton>?? </LinearLayout>??
?
然后構(gòu)建主Layout:main
?
[xhtml]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>?? <RelativeLayout?xmlns:android="http://schemas.android.com/apk/res/android"?? ????android:id="@+id/background"?? ????android:layout_width="fill_parent"?? ????android:layout_height="fill_parent"?? ????android:background="@drawable/background">?? ?????? ????<LinearLayout?android:id="@+id/box"?? ????????android:layout_alignParentBottom="true"?? ????????android:layout_width="wrap_content"?? ????????android:layout_height="wrap_content"?? ????????android:layout_centerHorizontal="true">?????? ????</LinearLayout>?? </RelativeLayout>??
?
最后在程序中加載子layout:
[java]?view plaincopy
public?class?BackgroundTest?extends?Activity?{?? ?????? ?? ????private?View?mBarView;?? ?? ????private?LinearLayout?mLinearLayout;?? ?? public?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ?? ????????setContentView(R.layout.main);??? ?? ????????mBarView?=?View.inflate(this,?R.layout.main2,?null);?? ?? ????????mLinearLayout?=?(LinearLayout)findViewById(R.id.box);?? ?? ????????mLinearLayout.addView(mBarView);?? }??
?
?
方法2:靜態(tài)主Layout動態(tài)加載動態(tài)的Layout
首先構(gòu)造你自己的子Layout和上面一樣;
然后構(gòu)建你自定義的Layout類:
[java]?view plaincopy
public?class?MenuLandscapeLinearLayout?extends?LinearLayout{??? ?? ????public?MenuLandscapeLinearLayout(Context?context)?{?? ????super(context);?? ?????? ?????? ????((Activity)?getContext()).getLayoutInflater().inflate(R.layout.main2,?this);??? ?????????? ????}????? }??
最后在程序中動態(tài)實例化并加載即可:
[java]?view plaincopy
public?class?BackgroundTest?extends?Activity?{?? ?????? ????private?LinearLayout?mLinearLayout;?? ?????? ????private?MenuLandscapeLinearLayout?mMenuLandscapeLinearLayout;?? ????@Override?? ????public?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ?? ????????setContentView(R.layout.main);???? ?? ????????mLinearLayout?=?(LinearLayout)findViewById(R.id.box);?? ?? ????????mMenuLandscapeLinearLayout=new?MenuLandscapeLinearLayout(this);?? ?? ????????mLinearLayout.addView(mMenuLandscapeLinearLayout);?? ????}?? }??
至此,完成了動態(tài)加載子Layout的兩種形式,里面可思考的很多,比如封裝常用事件、資源,從而節(jié)省代碼、節(jié)省資源;
拋磚引玉,分享經(jīng)驗,希望能助大家優(yōu)化自己的程序。
轉(zhuǎn)自:http://blog.csdn.net/lzx_bupt/article/details/5600187
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的android: 静态XML和动态加载XML混合使用,以及重写Layout控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。