1、对于edittext的属性
et.setInputType(InputType.TYPE_CLASS_PHONE);//只能输入电话号码
et.setInputType(InputType.TYPE_CLASS_NUMBER);//只能输入数字
et.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);//只能输入邮箱地址
et.setInputType(InputType.TYPE_NULL); // 禁止输入(不弹出输入法)
只能这样写,如果
et.setInputType(InputType.TYPE_CLASS_PHONE | InputType.TYPE_CLASS_NUMBER)就不行
2、Webview最好动态设置宽高,
RelativeLayout.LayoutParams linearParams = (RelativeLayout.LayoutParams) webView1.getLayoutParams();
linearParams.height = h;
linearParams.width = w;
webView1.setLayoutParams(linearParams);
3、handler有sendmessage,还有removemessage,
这个方法使用的前提是之前调用过sendEmptyMessageDelayed(0, time),意思是延迟time执行handler中msg.what=0的方法;
在延迟时间未到的前提下,执行removeMessages(0),则上面的handler中msg.what=0的方法取消执行;
在延迟时间已到,handler中msg.what=0的方法已执行,再执行removeMessages(0),不起作用。
removeMessages不加参数会将handler对应message queue里的消息清空
4、.9图会给所在空间设置一个padding值,需要手动设置控件padding,如果在代码里面设置.9图也需要在设置padding,view.setpadding();
比如layout设置背景为一张.9图,这个layout就像是加上padding了,里面的控件会被挤压,需要在xml中设一下layout的padding,如果在代码中设了layout背景为.9图,同样需要重新代码设layout的padding
5、项目里的ProgressDialog导致了这么一个IllegalArgumentException异常,原因是在延时线程里调用了ProgressDialog.dismiss,但此时主Activity已经destroy了。
6、dialog的setContentView需要的show方法之后调用,在show方法里将dialog所属的Decorview添加到window上,然后后面才能将setContentView中的view添加到Decorview上
7、listview.setSelection(n)显示第n个item,
可以用 listview.smoothScrollBy(distance,duration) listview.smoothScrollByOffset(offset) listview.smoothScrollToPosition(index)平滑移动
listview.setEmptyView(view) listview无数据时显示的view,listview的emptyview要和listview在一个xml中,或者addview加到同一个xml中
8、java中的string的方法 content = content.replace(” 00:00:00”, “”);替换的结果在返回值里面,一定不要忘了content =
9、listview.setFriction(ViewConfiguration.getScrollFriction() * 2);
可以降低listview滑动速度,2是缩放系数,越大滑动越慢,参考Android Listview slow down scroll speed
10、对view或viewgroup设置marginbottom,如果他下面没有其他的东西,可能marginbottom无效,可以试试paddingbottom
11、layer-list可以做出某几边有边框,类似图层概念
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 连框颜色值 -->
<item>
<shape>
<solid android:color="#000000" />
</shape>
</item>
<!-- 主体背景颜色值 -->
<item android:bottom="1dp"> <!--设置只有底部有边框-->
<shape>
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
使用
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
android:background="@drawable/buttonstyle" />
12、改包名后如果项目的manifest中有provider,会导致新应用不能和以前应用同时安装,错误信息install failed conflicting provider,
<provider android:name=".apps.AppProvider"
android:authorities="game"
android:multiprocess="false"/>
将android:authorities的值修改为别的就可以了
13、更换样式可以改变系统控件的样式,例如AlertDialog.Builder(MainActivity.this,AlertDialog.THEME_HOLO_LIGHT)
是这样的
改成AlertDialog.Builder(MainActivity.this,android.R.style.Theme_Material_Light_Dialog_Alert)
使用的AlertDialog包是import android.app.AlertDialog;
在6.0手机上测试,没什么问题,但是在4.0(其他没测)会崩溃,改成v7包 import android.support.v7.app.AlertDialog;还是会崩溃,感觉这里sdk有bug,最终不适用Theme ,直接AlertDialog.Builder(MainActivity.this),同时使用v7包,在低版本手机上也是显示的Material样式的Dialog
14、图片名不能大写,在一个xml里,多次用include引入同一个xml有问题
15、类可以被abstract,final,public和默认(什么都不加)修饰,因为一个类,内部类可以被public,protected,default,private,abstract,final,static修饰,方法可以被public,protected,default,private,abstract,final,static修饰,被abstract修饰时类必须也被abstract修饰,成员变量可以被public,protected,default,private,final,static修饰,代码块可以被static,default修饰