android动态居中布局,Android动态添加布局的两种方式
釋放雙眼,帶上耳機,聽聽看~!
前言
大多數時候我們布局都是用xml來布局的,但有些時候也是會用到動態布局的,尤其是在一些大項目中,動態布局更是體現的淋漓盡致。
所以今天我們就來學習一些動態加添布局的兩種方式,分別是
動態添加xml布局
另外寫一個xml布局,然后通過java的方式讓他加載他主布局上
動態添加java布局
通過java寫出一個布局,然后再通過java的方式讓他加載他主布局上
一、動態添加xml布局
步驟
第一步構造容器
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
第二步構造xml文件
這里我們就主布局添加個button就可以了,用來點擊加載xml布局,被添加布局里面我就寫一個TextView,由于比較簡單這里就不貼了
第三步構造LayoutInflater
提到addview,首先要了解一下LayoutInflater類。這個類最主要的功能就是實現將xml表述的layout轉化為View的功能。為了便于理解,我們可以將它與findViewById()作一比較,二者都是實例化某一對象,不同的是findViewById()是找xml布局文件下的具體widget控件實例化,而LayoutInflater找res/layout/下的xml布局文件來實例化的。
而LayoutInflater有三種方式
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);或
LayoutInflater inflater = LayoutInflater.from(Activity.this);或
LayoutInflater inflater = getLayoutInflater();
這三種方法本質是相同的。
第四步inflate()加載布局
用LayoutInflater.inflate() 將LayOut文件轉化成VIew。
View view = inflater.inflate(R.layout.block_gym_album_list_item, null);
this.addContentView(view,lp);
關于第一步顯示布局的詳細介紹
改變布局主要是通過改變LayoutParams來實現的,LayoutParams繼承于Android.View.ViewGroup.LayoutParams。它相當于一個Layout的信息包,封裝了Layout的位置、高、寬等信息。需要注意的是,需要注意到要修改的View的父容器是什么類型的,FrameLayout,LinearLayout,RelativeLayout等,因為不同類型的LayoutParams是不同的。
上述代碼與以下xml布局代碼作用相同:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
改變布局位置
addRule可傳入不同的布局參數,如addRule(RelativeLayout.BELOW, R.id.XXX); 表示該View位于XXX下面。常用的布局參數有以下:
layoutParams.alignWithParent = true 如果對應的兄弟元素找不到的話就以父元素做參照物
RelativeLayout.CENTER_HORIZONTAL 在父控件中水平居中
RelativeLayout.CENTER_VERTICAL 在父控件中垂直居中
RelativeLayout.CENTER_IN_PARENT 相對于父控件完全居中
RelativeLayout.ALIGN_PARENT_BOTTOM 緊貼父控件的下邊緣
RelativeLayout.ALIGN_PARENT_TOP 緊貼父控件的上邊緣
RelativeLayout.ALIGN_PARENT_LEFT緊貼父控件的左邊邊緣
RelativeLayout.ALIGN_PARENT_RIGHT 緊貼父控件的右邊緣
RelativeLayout.ABOVE 在某元素的上方 需要第二個參數為某元素的ID
RelativeLayout.BELOW 在某元素的下方 需要第二個參數為某元素的ID
RelativeLayout.LEFT_OF 在某元素的左邊 需要第二個參數為某元素的ID
RelativeLayout.RIGHT_OF 在某元素的右邊 需要第二個參數為 某元素的ID
RelativeLayout.ALIGN_TOP 本元素的上邊緣和某元素的的上邊緣對齊 需要第二個參數為某元素的ID
RelativeLayout.ALIGN_BOTTOM 本元素的上邊緣和某元素的的下邊緣對齊 需要第二個參數為某元素的ID
RelativeLayout.ALIGN_LEFT 本元素的上邊緣和某元素的的左邊緣對齊 需要第二個參數為某元素的ID
RelativeLayout.ALIGN_RIGHT 本元素的上邊緣和某元素的的右邊緣對齊 需要第二個參數為某元素的ID
RelativeLayout.ALIGN_BASELINE 本元素的基線和某元素的的基線對齊 需要第二個參數為某元素的ID
二、動態添加java布局
我們這里還是以TextView為例,其實動態添加java布局和xml布局有異曲同工之處,無非就是用java的方式寫出控件,然后添加進布局里
第一步構造容器
和上面xml布局的一樣,所以這里就不貼了
第二步構造控件布局框架
其實和xml的第二步也是一樣的,只不過xml已經寫好了最外層的布局,所以我們也要用java寫出一個布局,好在里面放控件
LinearLayout view = new LinearLayout(this);
view.setLayoutParams(lp);//設置布局參數
view.setOrientation(LinearLayout.HORIZONTAL);// 設置子View的Linearlayout// 為垂直方向布局
//定義子View中兩個元素的布局
ViewGroup.LayoutParams vlp = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
第三步添加控件
其實這一步也沒有什么好講的,就是xml添加控件的方式改成java添加
TextView tv1 = new TextView(this);
tv1.setLayoutParams(vlp);//設置TextView的布局
tv1.setText("姓名:");
第四部將控件添加至容器
view.addView(tv1);//將TextView 添加到子View 中
總結
以上是生活随笔為你收集整理的android动态居中布局,Android动态添加布局的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 咸阳高考成绩查询2021,2021咸阳市
- 下一篇: b站的服务器在哪个位置,b站用的是哪个云