排版java
若是在一個layout中有幾個widget,最後一個widget採用fill_parent,這將填滿剩餘的空間。若是某一個widget(非最後一個)採用fill_parent,則後面的widget將沒法顯示。從某個意義上fill_parent能夠理解爲父layout剩餘的全部空間。android
Eclipse中的提示功能git
咱們在使用eclipse時候,在編譯XML,會自動由提示,可能會由於咱們按了一下鼠標或者其餘方式,提示消失,能夠採用Atl+/的方式,啓動提示。api
TextView(Label)eclipse
在Andriod裏面是textview,在XML裏面有下的一些屬性ide
android:typeface 字體monospace
android:textStyle bold italic bold|italic
android:textColor #FF0000,red
android:textSize 例如"25px",在尺寸方式,有時咱們使用px,有時使用dip。px指的像素,dip指的是一種基於屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px,採用dip,咱們能夠無須考慮像素是否密集,而獲取咱們期待的大小,所以推薦使用dip。
android:gravity 內容的位子,center,left,right等等
android:background 背景色,採用RGB方式
android:singleLine 值爲flase或者ture,若是false這容許多行。函數
Button學習
這是TextView的subclass,Lable的全部,也適用於Button。在Andriod學習筆記(四):不使用IDE採用命令行中咱們給出了一個按鍵出發的例子,利用XML,能夠更爲簡單。字體
<Button
android:id="@+id/myButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="buttonClickAction" <!-- 格式爲andriod:onClick="method_name"-->
/>this
在java source code中,咱們在類中無須implement interface,能夠直接在public void <method_name>(View v)這樣處理。以下:
......
import android.view.View;
public class Activity01 extends Activity
{
public void buttonClickAction(View button){
... ...
}
}
ImageView和ImageButton
這個對應的是TextView和Button,只不過是Image,下面是一個ImageView的例子:
<ImageView
android:id="@+id/mylanscape"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:src="@drawable/hdrlandscape" <!--這裏是圖片的來源,也能夠經過setImageURI()指定URI,咱們在res/drawable-hdpi中放置了一個圖片hdrlandscape.jpg,經過android:src可實現加載-->
/>
EditText
下面是一個例子:
<EditText
android:id="@+id/myfield"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:singleLine="false" <!-- 這裏表示多行-->
<!-- android:autoText 自動進行拼寫檢驗
addroid:capitalize 單詞中第一個字母自動爲大寫,這對於名詞,城市的EditText頗有幫助
andriod:digits 只容許數字-->
/>
CheckBox
CheckBox和RadioBox都是從CompoundButton中繼承的,而CompoundButton是繼承TextView。在XML中以下定義:
<CheckBox
android:id="@+id/mycheckbox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This checkbox is:uncheck"
/>
經常使用的checkcbox函數有:isChecked(),setChecked(),toggle()(改變狀態,如是checked的變成unchecked,若是是unchecked變爲checked。)。若是CheckBox的狀態發生更改,須要在程序中進行觸發方法處理。以下:
public class HelloAndriod extends Activity implements CompoundButton.OnCheckedChangeListener{
private CheckBox mycheckbox = null;
@Override
public void onCreate(Bundle savedInstanceState){
... ...
mycheckbox = (CheckBox)findViewById(R.id.mycheckbox);
mycheckbox.setOnCheckedChangeListener(this);
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
mycheckbox.setText("This checkbox is : " + (isChecked ? "checked":"unchcked"));
}
}
RadioBox
RadioBox處理外觀上於CheckBox不同外,RadioBox一般會組成一個Group,在Group中只能有一個RadioBox處於checked狀態。在XML中以下處理:
<RadioGroup
android:id="@+id/myradiogroup"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<RadioButton android:id="@+id/radio1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text ="Radio Text One" />
<RadioButton android:id="@+id/radio2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text ="Radio Text Two" />
<RadioButton android:id="@+id/radio3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text ="Radio Text Three" />
</RadioGroup>
咱們更常操做RadioGroup,常見的方法包括有check(),例如roup.check(R.id.radio1)),將R.id.radio1對應的radiobutton選上;clearCheck(),清楚全部的選擇,所有都是unchecked;getCheckedRadioButtonId(),獲取選上的radiobutton的ID,無則返回-1。在下面的例子中,咱們在以前的checkbox的例子上增長radiobox
public class HelloAndriod extends Activity implements CompoundButton.OnCheckedChangeListener, RadioGroup.OnCheckedChangeListener{
private RadioGroup myradiogroup = null;
public void onCreate(Bundle savedInstanceState){
... ...
myradiogroup = (RadioGroup)findViewById(R.id.myradiogroup);
myradiogroup.setOnCheckedChangeListener(this);
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
mycheckbox.setText("This checkbox is : " + (isChecked ? "checked":"unchcked"));
}
public void onCheckedChanged(RadioGroup group, int checkedId){
int radioId = myradiogroup.getCheckedRadioButtonId();
if(radioId < 0 )
myTextView.setText("No Radio Button is selected");
else{
RadioButton rb = (RadioButton)group.findViewById(radioId);
myTextView.setText("radio button: " + rb.getText());
}
}
}
View
上面的widget都是View,能夠在XML中使用View的特性。
例如:android:visibility="invisible",這使得widget不可見,可是保留其所佔的位置,若是是"gone",則不保留位置。
和顏色相關的android:background,能夠是具體的顏色,例如android:background="#0000ff",也能夠是圖片,例如android:background="@drawable/hdrlandscape",可是圖片的話,ckeckbox的佔用位置需考慮圖片的大小。TextView以及其繼承類可使用android:textColor="#00ff00"來指定文本的顏色,處此以外,還能夠採用ColorStateList的方式來設定不一樣狀況下text的顏色。
咱們在res/layout/目錄下新增一個Android XML文件button_color.xml對咱們上面的button在不一樣狀態下的顏色進行描述:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#00ff00" android:state_focused="true"/>
<item android:color="#ff0000" android:state_pressed="true" />
<item android:color="#0000ff" android:state_pressed="false" />
</selector>這些選擇從上至下是具備優先級別的,例如咱們將state_focused放置在最後,並不起做用,由於會先執行了state_pressed="false"的顏色。相關的狀態有state_pressed, button_color, state_focused, state_selected, state_active, state_checkable, state_checked, state_enabled, state_window_focused。
而後咱們main.xml,對相關的widget,增長:android:textColor="@layout/button_color"
因爲繼承View,可使用View的方法,與UI相關的:setEnabled(), isEnabled(),requestFocus(),isFocused
在容器中獲取widget中實例相關的有:getParent()-得到父容器或者父widget,findViewById(),getRootView(),這些在XML中都很好理解。
相關連接: 個人Android開發相關文章