Android中的集中常用布局方式和按钮事件的处理方式
一、Android中监听点击事件的三种方式
// 方式一
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("按钮被点击了");
}
});
<pre name="code" class="java">// 方式二
// 实现OnClickListener接口
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(this);
// 实现接口方法
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("点击了按钮");
}
// 方式三 button在layout中绑定事件onClick="clickButton" 包括多个按钮触发同一个方法根据ID来判断点击的按钮
public void clickButton(View v) {
int btnId = v.getId();
switch (btnId) {
case R.id.button1:
System.out.println("button3");
break;
case R.id.button2:
System.out.println("button4");
break;
case R.id.button3:
System.out.println("button5");
break;
}
}
二、Android中的几种布局方式
1、相对布局
RelativeLayout
组件默认左对齐、顶部对齐
设置组件在指定组件的右边
android:layout_toRightOf="@id/tv1"
设置在指定组件的下边/上边
android:layout_below="@id/tv1"
android:layout_above="@id/tv1"
设置右对齐父元素
android:layout_alignParentRight="true"
设置与指定组件右对齐
android:layout_alignRight="@id/tv1"
设置在父控件的中心
android:layout_centerInParent="true"
2、线性布局
LinearLayout
指定各个节点的排列方向
android:orientation="horizontal" // 水平
android:orientation="vertical" // 垂直
设置右对齐
android:layout_gravity="right"
当竖直布局时,只能左右对齐和水平居中,顶部底部对齐竖直居中无效
当水平布局时,只能顶部底部对齐和竖直居中
使用match_parent时注意不要把其他组件顶出去
线性布局非常重要的一个属性:权重
android:layout_weight="1"
权重设置的是按比例分配剩余的空间
3、帧布局
FrameLayout
默认组件都是左对齐和顶部对齐,每个组件相当于一个div
可以更改对齐方式
android:layout_gravity="bottom"
不能相对于其他组件布局
4、表格布局
TableLayout
每个<TableRow/>节点是一行,它的每个子节点是一列
表格布局中的节点可以不设置宽高,因为设置了也无效
根节点<TableLayout/>的子节点宽为匹配父元素,高为包裹内容
<TableRow/>节点的子节点宽为包裹内容,高为包裹内容
以上默认属性无法修改
设置列数
android:layout_column="1"
根节点中可以设置以下属性,表示让第1列拉伸填满屏幕宽度的剩余空间
android:stretchColumns="1"
5、绝对布局
AbsoluteLayout
直接指定组件的x、y坐标
android:layout_x="100dp"
android:layout_y="100dp"
三、拨打电话方式
添加权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
// 创建意图对象
Intent intent = new Intent();
// 把动作封装到意图对象中
intent.setAction(intent.ACTION_CALL);
// 设置打给谁
intent.setData(Uri.parse("tel:" + phoneNumberString));
// 把动作告诉系统
startActivity(intent);
四、发送短信
需要添加权限:
<uses-permissionandroid:name="android.permission.SEND_SMS"/>
// 获取电话号码和内容
EditText phoneText = (EditText) findViewById(R.id.phoneNumber);
EditText contentText = (EditText) findViewById(R.id.content);
String number = phoneText.getText().toString();
String content = contentText.getText().toString();
SmsManager message = SmsManager.getDefault();
ArrayList<String> messageArray = message.divideMessage(content);
// 短信内容过长,分条发送
for (String msg : messageArray) {
// 发送
message.sendTextMessage(number, null, msg, null, null);
}