上一篇,我們已經介紹了一點代碼布局,接下來,我們接著介紹
一、常用組件設定
Button,ImageView等組件基本上和xml中所定義的基本一樣,就不再詳細介紹了。
給出一些常用的設定方式,供大家參考:
setVisibility(View.VISIBLE) //是否可見
requestFocus() //獲得焦點
setGravity(Gravity.CENTER_VERTICAL) //內部位置對齊
setPadding(10, 5, 5, 5); //在內部距離各邊距離
setId(1); //設定ID標示
對於xml中,android:layout_marginTop的設定,組件是沒有這個設定方法的。其實從layout_marginTop字面意義也可以看出,它是針對父類布局設定位置的。
這裡給出個關於設定layout_marginTop的例子:
mLayoutParams = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);mLayoutParams.addRule(RelativeLayout.RIGHT_OF, ID_IMAGE_HEAD);mLayoutParams.topMargin = 5;mLinearLayout.addView(mTextView, mLayoutParams);
如果對於上一篇關於TextView組件位置的設定有印象的話,這裡就不難理解了,它就是告訴父類對象,當前組件針對父類布局要放到什麼位置。
關於EditText這個組件,如何設定最大輸入字數,這裡只給個例子:
mEditText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(8) });
我這裡設定最多可輸入的字數為8個。
二、相對布局
除了經常使用的線性布局外,還常會用到相對布局,尤其是它的相對位置設計非常適合機型適配要求。
在寫相對布局的xml時候,我們幾乎要位每個最近設定ID標示,好告訴其他組件相對位置關係。在代碼布局中也同樣如此,需要為它們獨立設定ID標示,而且不要重複,否則位置關係就會錯誤。
下面,我們給出一段例子,方便大家理解:
// 建立RelativeLayout對象RelativeLayout mRelativeLayout = new RelativeLayout(this);mRelativeLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));// TextView組件:白色30號字TextView mTextView = new TextView(this);mTextView.setTextSize(30);mTextView.setTextColor(-1);mTextView.setText("hello world");// 為其設定唯一的id標示mTextView.setId(1);// 為其設定位置關係RelativeLayout.LayoutParams mLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);// 距離頂部20mLayoutParams.topMargin = 20;// 距離左邊20mLayoutParams.leftMargin = 20;// 添加組件mRelativeLayout.addView(mTextView, mLayoutParams);// TextView組件:紅色20號字mTextView = new TextView(this);mTextView.setTextSize(20);mTextView.setTextColor(0xffff0000);mTextView.setText("hello world");// 為其設定唯一的id標示mTextView.setId(2);// 為其設定位置關係mLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);// 距離頂部20mLayoutParams.topMargin = 20;// 距離左邊20mLayoutParams.leftMargin = 20;// 設定它在白色字的下面mLayoutParams.addRule(RelativeLayout.BELOW, 1);// 水平置中顯示mLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);// 添加組件mRelativeLayout.addView(mTextView, mLayoutParams);
: