1.viewgroup的onDraw:
viewgroup默认是不调用自己的onDraw方法的,需要在初始化时设置:
setWillNotDraw(false);
而且viewgroup是画完自己之后再画子view,所以后来画的view会把原来的viewgroup画的覆盖掉,需要注意。
2.消除按钮自带边框:
按钮自带了一个灰色的边框,比较难看,设置样式去除:
style="?android:attr/borderlessButtonStyle"
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#5ee0a4"
android:endColor="#54cfb6"
android:angle="270">
</gradient>
</shape>
重点在angle,角度,这里的270度是竖直方向的渐变。
4.输入框不唤醒键盘:
如果一个界面中有输入框,那么进入的时候回自动唤醒键盘,因为焦点给了输入框。可以在输入框前面设置一个不占空间的view,让它获取两个焦点就可以了。
把焦点给输入框的父布局是没用的,因为父布局还会交给他。
5.webview显示js内容:
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
直接把js文本传入content就可以了。
6.输入框hint颜色设置:
android:textColorHint="@color/stringDark"
7.自定义Spinner的适配器:
我想让spinner子项根据条件显示绿色文本和非绿色,所以需要自定义。最简单的不是直接继承他的适配器,而是实现接口:
public class OrderAdapter extends BaseAdapter implements SpinnerAdapter {
private List<String> texts;
private List<Boolean> list;
private Context context;
public OrderAdapter(Context context,List<String> texts, List<Boolean> list) {
this.texts = texts;
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
TextView tv=new TextView(context);
tv.setText(texts.get(i));
if (list.get(i)){
tv.setTextColor(Color.GREEN);
} else {
tv.setTextColor(context.getResources().getColor(R.color.stringLight));
tv.setOnClickListener(null);
tv.setClickable(false);
}
return tv;
}
}
8.spinner设置显示的项:
spinner.setSelection(0);
9.文本框展开显示:
tvFee.setHeight(tvFee.getLineHeight()* tvFee.getLineCount());