您的位置:首页 > 移动开发 > Android开发

常见Android开发问题整理

2017-05-25 12:04 260 查看
记录常见Android开发问题并整理其解决方法。

界面控件相关

EditText
OnClick
弹出键盘

有时候会在
EditText
上设置
OnClick
事件,实现点击弹出
DatePickerDialog
或者进行其他后续操作,但是实际测试会出现点击后弹出键盘的问题,解决方法如下:

editText.setFocusable(false);//如此设置即可实现点击控件不弹出键盘
...
@OnClick(R.id.et_todo_expire_date)
void showExpireDate() {//点击弹出日期选择对话框
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
//...
}
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}


使用完键盘后切换界面隐藏键盘

使用完键盘后切换到新的界面有时候键盘不会隐藏,可以使用下面的代码隐藏键盘

getActivity().getWindow()
.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


业务处理相关

getResources().getColor()
过时

使用
ContextCompat.getColor(this,R.color.white);
即可从xml中获取颜色。

AlertDialog
自定义布局

View view = View.inflate(getActivity(), R.layout.view_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setCancelable(true)
.setView(view);
final AlertDialog alertDialog = builder.create();
TextView tvDel = (TextView) view.findViewById(R.id.tv_dialog_del);

tvDel.setOnClickListener(new View.OnClickListener() {//删除
@Override
public void onClick(View v) {
//...
alertDialog.dismiss();
}
});

alertDialog.show();


Instant Run
导致
SugarORM
初始化表异常

项目中使用了
SugarORM
作为数据库操作中间件,但是在初始化安装 apk 的时候总是报错,之前没开启
Instant Run
的时候就正常。

网上查了下,第一次安装 apk 时关闭
Android Studio
Instant Run
就OK了。

TextView
内文本太长不换行

TextView 中加入如下配置项:

android:maxLines="1"
android:ellipsize="end"
<!--
`android:ellipsize` 设置项如下
"start"   --省略号显示在开头   "...pedia"
"end"     --省略号显示在结尾   "encyc..."
"middle"  —-省略号显示在中间   "en...dia"
"marquee" -–以横向滚动方式显示(需获得当前焦点时)
-->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android