长按监听
需要实现OnLongClickListener接口
private OnLongClickListener mLongClick = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
tvShow.setText("按钮被长按了");
//false表示不拦截事件
//true表示拦截事件
return true;
}
};
注意onLongClick的返回值,false不拦截事件,true拦截事件
通过视图的setOnLongClickListener来设置监听
btn1.setOnLongClickListener(mLongClick);
Logcat的使用
主要有5个等级的信息打印
Log.v(tag,msg) 最全的详细日志
Log.d(tab,msg) debug级别的打印
Log.i(tab,msg) info级别
Log.w(tab,msg) warn级别
Log.e(tab,msg) error级别的打印
如果需要导出机器中的日志可以使用adb指令
adb logcat -v time>D:\log201704201032.txt
停止打印用Ctrl+C
EditText
android:inputType="textPassword"设置输入类型,帮助输入法显示合适的键盘类型
android:maxLength="5" 最大的宽度有多少个字符,宽必须是wrap_content
android:ems="5"多少个字符的宽度
android:hint="@string/et_hint"输入框提示
设置输入的光标位置
et.setSelection(index); 设置输入位置.起始光标和结束光标位置一样
监听键盘的Enter键
et.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(v.getId() == R.id.et1){
Log.e("m_tag","输入框输入完毕");
}
Log.e("m_tag",event.getKeyCode()+"===="+v.getText());
//处理Enter按下之后的逻辑
return false;
}
});
内容的处理
Editable str = et.getText();
str.append("2");
str.insert(where, text)
s.delete(start, end);
监听文本变化
// 监听输入的内容变化情况
et.addTextChangedListener(new TextWatcher() {
//改变中
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.e("m_tag", "onTextChanged:" + s);
}
//改变前
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
Log.e("m_tag", "beforeTextChanged:" + s);
}
//改变后
@Override
public void afterTextChanged(Editable s) {
Log.e("m_tag", "afterTextChanged:" + s);
if (s.length() > 6) {
s.delete(6, s.length());
}
}
});
单选按钮和多选按钮
android:checked="true"设置默认选中状态 true为选中 false不选中
android:button="按钮资源" 可以控制选择框前面的按钮 android:button="@null" 表示去掉前面的按钮
CheckBox
xml中:
<CheckBox
android:id="@+id/ch_moves"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="看电影" />
java中可以监听选择变化
/**
* 选择框变化的监听器(单个选择框)
*/
private CompoundButton.OnCheckedChangeListener onCkeckChange = new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
list.add(buttonView.getText().toString());
setTitle(buttonView.getText() + "被选中");
} else {
list.remove(buttonView.getText().toString());
setTitle(buttonView.getText() + "被取消选中");
}
}
};
设置监听
((CheckBox) findViewById(R.id.ch_moves)).setOnCheckedChangeListener(onCkeckChange);
RadioButton和RadioGroup,RadioGroup继承自LinearLayout
<RadioGroup
android:id="@+id/sex_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/r_man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/r_woman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" />
</RadioGroup>
在java中可以监听选择变化
private RadioGroup.OnCheckedChangeListener onGroupCheckChange = new
RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton btn = (RadioButton) findViewById(checkedId);
setTitle("选中了:"+btn.getText());
}
};
sexGroup = (RadioGroup) findViewById(R.id.sex_group);
sexGroup.setOnCheckedChangeListener(onGroupCheckChange);
获取结果
int id = sexGroup.getCheckedRadioButtonId();
清除所有的选中状态
sexGroup.clearCheck();