Android笔记
GridView
代码:
android:verticalSpacing="8dp"
android:horizontalSpacing="8dp"
说明:
gridview每个格子之间的间隔(垂直,水平)
140320:GridView, ListView更改点击背景
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
ListView
140324:listview 没分割线
android:divider="#FFCC00"
//140504listview 的onItemClick拿数据 mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView lv = (ListView) parent; ListViewItem data = (ListViewItem) lv.getItemAtPosition(position); Intent intent = new Intent(mContext, Demo.class); intent.putExtra(Demo.KEY, data); startActivity(intent); } });
Layout
layout_width和layout_height中fill_parent已经过时,使用match_parent替换
140317:layout_gravity与gravity的区别
layout_gravity是组件相对父窗体显示的位置(注意不要把组件的width设成match_parent,否则layout_gravity无效)
grivaty是组件内内容的显示的位置
居右,居左
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
140320:layout_weight数值越小,占的位置越大
如果要高weight,则layout_height="0",如果要宽weight,则layout_width='0'
android:layout_weight="1"(占6分之5的位置)
android:layout_weight="5" (点6分之1的位置)
140324:LinearLayout里面的组件没有居左居右(即:组件里面的android:layout_gravity无效, FrameLayout里面的组件用这个属性才有效)
140326:layout_gravity无效 1.检查一下组件的高度是不是match_parent,是的话改为wrap_content
2.检查一下父控件是不是wrap_content
3.如果是动态添加组件,xml中设置的居中都无效,要在代码中重新设置,代码如下
LayoutParams pars = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); pars.leftMargin = 12; pars.gravity = Gravity.CENTER_VERTICAL; view.setLayoutParams(pars)
140331:
居中
RelativeLayout里组件写layout_gravity是无效的,要使用android:layout_centerInParent,layout_centerVertical,layout_centerHorizontal(里面的组件高度是要wrap_content,不能是match_parent), 但是RelativeLayout的gravity有效
layout_gravity只在FrameLayout和LinearLayout里有效
140402:动态添加组件,设置layout_height无效,应该加上minHeight
TextView
android:singleLine="true"
说明
当不要TextView因为字数太长而换行时,可以设为true
超长部分用...省略
文字居中
android:gravity="center"
EditText
EditText获取焦点软盘无效,即使设置focusable,requestFocus都无效,加上下面代码即可
((InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);
View
140417:view 的onKey函数会执行两次,一次是onKeyDown,一次是onKeyUp
所在在onKey方法里面要进行判断
view.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
}else{
//do sth
}
return false;
}
});
Selector
<!--140321:创建一个点击的selector--> <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_enabled="false" android:drawable="@drawable/bg_topbar_edit"></item> <item android:state_pressed="true" android:drawable="@drawable/bg_topbar_edit_pressed"></item> </selector> <!--使用--> <ImageView android:background="@drawable/selector.xml" />
140321:如果组件初始化没有设置onClickListener,selector是不会生效的,至少Layout这个view是不行的
Style
可以在styles.xml里对一些字体进行统一设置 基类 <style name="myTextApprearence" parent="@android:style/TextAppearance"> <item name="android:textColor">@android:color/black</item> </style> 子类 <style name="myTextApprearence.big"> <item name="android:textSize">22sp</item> </style> <style name="myTextApprearence.medium"> <item name="android:textSize">18sp</item> </style> 再子类 <style name="myTextApprearence.micro.medium"> <item name="android:textColor">@android:color/darker_gray</item> </style> 然后在TextView里面用如下方法调用 style="@style/myTextApprearence.small"