这个月忙忙碌碌已快接近尾声,主要是公司的app进行项目重构以及UI升级。所以略作总结。
1、出现编译内存不够
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[2016-03-02 17:00:11 - EGStarSplash] Please check logcat output for more details.
[2016-03-02 17:00:11 - EGStarSplash] Launch failed on device: 0123456789ABCDEF
解决办法,肯定卸掉真机里面一些应用,包括你的app也卸载掉。
2、Android 如何在Java代码中手动设置控件的marginleft
a、定义LayoutParams
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);//定义一个LayoutParams
b、在LayoutParams中设置marginLeft
layoutParams.setMargins(20,0,0,0);//4个参数按顺序分别是左上右下
c、把这个LayoutParams设置给控件
mView.setLayoutParams(layoutParams); //mView是控件
其中说一下这里面的参数new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
如果是父相对布局,那么就是RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);//定义一个LayoutParams
最后补充一点:
FILL_PARENT,即填满(和父容器一样大小);
WRAP_CONTENT,即包裹住组件就好。
layoutParams.setMargins(20,0,0,0);设置都是像素值,单位px。
为了使用不同机子的分辨率,需要把dip转换成px设置进去。
mLayoutParams.setMargins(0, 0, 10, dip2px(this,54));
private static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
3、布局分隔线的问题
使用android:divider="@drawable/shape_divider2"
android:showDividers="beginning|end"
设置分割线间隔,有些时候能显示不出来end这条线是因为你设置子布局高度match_parent,
父布局又是50dp,就是不出来效果。这样你应该设置子布局49dp就出来了,如你的android:divider="@drawable/shape_divider2"是1dp的话。
4、基类activity的全局变量继承问题
android 写activity一般都是有一个先一个基础类activity。然后项目中所有activity都是继承这个基础的。
如果在定义全局变量,例如protected boolean mItemCanLongClick = true;
那么要在子类里面,初始化改变这个值。一定要在前面才有效果。
// Item是否支持长按
super.mItemCanLongClick = false;
super.onCreate(savedInstanceState);
5、滚动条的隐藏,包括listview
Android Listview 隐藏滚动条在<ListView>标签中设置属性。
android:fastScrollEnabled="false"
以下属性scrollbars可以设置为none也可以不设置为none。效果会有点不同。根据具体情况决定是否设置为none。
android:scrollbars="none"
6、xml设置背景边框颜色,幅度,背景颜色
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/white" />
<stroke
android:width="1dip"
android:color="@color/title_bar_bk_color" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
7、xml设置button或者布局点击效果
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/ui_blue_buttom_select_color" android:state_pressed="true"></item>
<item android:drawable="@color/ui_blue_buttom_color" android:state_enabled="false"></item>
<item android:drawable="@color/ui_blue_buttom_color" android:state_enabled="true"></item>
</selector>
8、android里TextView加下划线
tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线
tvTest.getPaint().setAntiAlias(true);//抗锯齿
9、android Textview属性
1、在Android TextView中有个内容过长加省略号的属性,即ellipsize,
用法如下:
在xml中:
android:ellipsize="end" 省略号在结尾
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="marquee" 跑马灯
最好加一个TextView显示行数的约束,例如:android:singleline="true"或者android:maxLines="1"
在java文件中:
tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
2、android textview长按或者单击可以复制
ndroid:textIsSelectable="true"10、android EditView属性
1、android:ems
android:ems = "10"设置TextView或者Edittext的宽度为10个字符的宽度。当设置该属性后,控件显示的长度就为10个字符的长度,超出的部分将不显示。
设置为10时,最多编辑 10个em ,一个em单位是 两个inch ,但是随着自动调整,在Android中 em代表‘M’的数量 。
但是 EditText的属性 ,只有在 android:layout_width=“wrap_content” 时,才会显示;
如果是 android:layout_width=“match_parent” 时,则不会有变化。
2、android:maxLength
android:maxLength="3"即限制最大输入字符个数为10
3、requestFocus
mText.setFocusable(true);xml里面输入框设置默认获取焦点 <requestFocus />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent">
<requestFocus />
</TextView>
4、setSelection设置光标
怎样把光标放在EditText中文本的末尾处?mText.setSelection(mText.getText().length());
android:inputType="numberSigned|numberDecimal"
5、行距
1、android:lineSpacingExtra设置行间距,如"8dp"。
2、android:lineSpacingMultiplier
设置行间距的倍数,如"1.5"。
11、屏蔽HOME键
初始化
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; //需要自己定义标志
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码
重写
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
return true;
}
return super.onKeyDown(keyCode, event);
}
权限
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>