New UI-純Java代碼載入布局,newui-java布局

來源:互聯網
上載者:User

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代碼載入布局的內容就講到這裡,謝謝大家~






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.