Android 开发错题本

一 设置标题栏 和 状态栏相同背景色.

// 设置状态栏和标题栏. 使用上面的增加和一个View
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
// 找到自定义的状态栏.
LinearLayout layout_title = (LinearLayout) findViewById(R.id.ll_title_layout);
// 计算高度.
int statusH = FunctionTools.getStatusBarHeight(this.getApplicationContext());
int titleH = layout_title.getLayoutParams().height;
// 设置高度. 返回的是像素. 
layout_title.getLayoutParams().height = titleH + statusH;

获取状态栏高度

/**
     * 获取高度.
     * @param context
     * @return
     */
    public static int getStatusBarHeight(Context context){
        int statusHeight = -1;
        try {
            Class clazz = Class.forName("com.android.internal.R$dimen");
            Object object = clazz.newInstance();
            int height = Integer.parseInt(clazz.getField("status_bar_height").get(object).toString());
            statusHeight = context.getResources().getDimensionPixelSize(height);
        } catch (Exception e){
            e.printStackTrace();
        }
        return statusHeight;
    }

布局文件



    
    
        

二 , 隐藏标题栏 和 状态栏

(修改主题Style)

隐藏标题栏

true

隐藏状态栏(全屏)

true

三 , 取消ListView 子控件的点击事件.

// 通常我们用到的是第三种,即在Item布局的根布局加上下面属性.
android:descendantFocusability=”blocksDescendants”

属性解析

// viewgroup会优先其子类控件而获取到焦点
beforeDescendant
// viewgroup只有当其子类控件不需要获取焦点时才获取焦点
afterDescendant
// viewgroup会覆盖子类控件而直接获得焦点
blocksDescendants

如果出现CheckBox无法屏蔽的现象

// 可以自定义CheckBox 然后重写他的onTouchEvent() 方法
// 返回false 说明不处理点击事件.
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return false;
    }

popupWindow 点击其他区域自动消失

// 设置为wrap_content
View contentView = LayoutInflater.from(getActivity()).inflate(R.layout.pw_conf_mode,null);
mConfModePW = new PopupWindow(contentView,WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,true);
// TODO : 不设置此属性. 无法消失.
mConfModePW.setBackgroundDrawable(new BitmapDrawable());

你可能感兴趣的:(Android 开发错题本)