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只在FrameLayoutLinearLayout里有效
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"
原文地址:https://www.cnblogs.com/baron89/p/3598718.html