关于Menu事件
当用户点击Menu按钮时就会调用onCreateOptionsMenu(Menu menu);
就可以重写 public boolean onCreateOptionsMenu(Menu menu) {} 事件
例如:
public boolean onCreateOptionsMenu(Menu menu) {
//操作menu,添加菜单项
//第一个参数是 菜单所处的组ID
//第二个参数是 当前菜单的ID(类似于设定Item的下标)
//第三个参数是 是它的排序(暂时不懂)
//第四个参数是 按钮的TEXT
menu.add(0, 1, 1, R.string.exit);
menu.add(0, 2, 2, R.string.about);
return super.onCreatOptionsMenu(menu);
}
Menu事件:当用户点击Menu里面的项时会自动调用 onOptionsItemSelected(MenutItem item);
重写 public boolean onOptionsItemSeleted(MenuItem item){}事件
例如:(续上例子)
public boolean onOptionsItemSeleted(MenuItem item){
//获取用户点击的Item的ID然后执行相应的事件
if (item.getItemId() == 1){
finish();//结束当前Activity(上一章的内容)
}
return super.onOptionsItemSelected(item);
}
常用布局:android的XML布局类型类似于CSS布局一样 可以使用很多类似CSS的样式来进行布局
android字体大小单位用 pt,如android:textSize="35pt";距离用dip而不是用px,如android:padding="10dip"; //比px像素点的兼容性更好
padding--内边距 margin---外边距,若两个控件都设margin,则两个控件的距离是两个控件的margin值相加
绝对布局:
通常使用LinearLayout和TableLayout相互嵌套进行布局,要注意使用android:orientation="";//设置是水平还是垂直
常用的属性:
android:grivity //指定控件的位置,比如居中、靠右(注:拥有该属性的控件的内容的对齐方式)
android:sigleLine //如果为true,则控件的内容在同一行中显示
android:layout_weight="1" //这个属性很重要,在多层嵌套中,要设置这个属性,就是各占几分之几的意思
相对布局:
常用的属性:
基本单词:
above//上面
below//下面
left//左边
right//右边
以下属性用“ * ”代替上面这4个单词,基本每个属性都有这4个方向,故都差不多效果
//以下属性用在"相离关系"中,如A和B最近只能"相切"
android:layout_* //将拥有该属性的控件放到指定ID的控件的*面。 (注,此属性并不代表两个控件要要全贴在一起,只要有一点点的接触,既算满足该属性)
例如:A控件拥有该属性 --android:layout_above="@id/B"; 意思是,A控件在B的上面
基本单词:
Top//上面
Bottom//下面
Left//左边
Right//右边
同样,用" * "来代替这4个单词
//以下属性用在"包含关系"中,如A包含B;
android:layout_align* //将拥有该属性控件的边缘与指定ID控件的边缘对其 (注:此属性是两个控件若一样大小则平行贴在一起,一大一小则大的包含小的)
例如:A控件拥有该属性---android:layout_alignLeft="@id/B";意思是,A控件的左边缘和B控件的左边缘对齐
//下面这个属性,使用的单词和上一个一样
android:layout_alignParent* //如果该属性为true,则该控件和其父控件*对齐
例如:A控件拥有该属性---android:layout_alignLeft="true";意思是,A控件在父控件内的对齐方式是左对齐
基本单词:
Horizontal//水平
InParent//水平和垂直
Vertical//垂直
//使用" * "代替上面3个单词
android:layout_center* //若该属性为true,则该控件将被置于父控件的*中央
例如:A控件拥有该属性---android:layout_centerHorizontal="true";意思是,A控件被放置在父控件的水平中央出(水平居中)
RadioButton的使用方法:
在使用的时候,和其他控件一样,需要在XML中添加RadioButton;但是每一组RadioButton需要用RadioGroup隔开。
例如: 一组单选按钮--男&女
<RadioGroup
android:id="@+id/genderGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"//决定按钮的排列方式是水平还是居中
>
<RadioButton
android:id="@+id/femaleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
/>
<RadioButton
android:id="@+id/maleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
/>
<RadioGroup>
使用的时候跟其他控件一样,需要通过findViewById获得RadioGroup和其包含的所有RadioButton;
当绑定监听器的时候,则需要用到RadioGroup来绑定。如:
genderGroup = (RadioGroup)findViewById(R.id.genderGroup);
genderGroup.setOnCheckedChangeListener();
监听器的接口是:RadioGroup.onCheckedChangeListener{}
重写接口的方法以及相应用户的点击事件:
public void onCheckedChanged(RadioGroup group, int checkedId){
if (famaleButton.getId() == checkedId){
//相应“用户点击‘男’的按钮时”事件
}
else if (maleButton.getid() == checkedId){
//相应“用户点击'女'的按钮”事件
}
}
CheckBox的使用:
同样现在XML中布局:
<CheckBox
android:id="@+id/run"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跑步"
/>
runBox = (CheckBox)findViewById(R.id.run);
事件绑定:runBox.setOnCheckedChangeListener();
监听器的类型:CompoundButton.OnCheckedChangeListener{}; //注,需要为每一个CheckBox重写一次相应事件,不知道存不存在响应一组CheckBox?以后在回过头来看
因为每个CheckBox都要重写一次,所以可以采用临时变量的方式来重写;
比如:
runBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener{
public void OnCheckedChanged(CompoundButton buttonView, boolean isChecked){
if (isChecked){
//响应“用户勾选了‘跑步’这个CheckBox”事件
}
else{
//用户没有勾选
}
}//End for OnCheckedChanged
}//End for CheckBox监听器的接口
); //End for 控件绑定监听器 记得不要漏掉“;”,最好是先打完setOnCheckedChangeListener();然后再在口号内打算new 接口,这样就不会漏掉了
Toast的使用方法//类似于面向对象写界面的Message,用户提示用户一些错误,好像不能添加按钮?以后在回来看
//第一个参数是 拥有该Toast的Activity,这里假设拥有该Toast的Activity叫"Test",Test.this代表Test这个Activity对象
//第二个参数是 该Toast里面的Text,既要显示的内容
//第三个参数是 显示的方式?or?一个常量,姑且这么用吧,以后弄明白了其他用法在回来看
Toast.makeText(Text.this, "你好", Toast.LENGTH_SHORT);