美文网首页
Android 开发错题本

Android 开发错题本

作者: 王世军Steven | 来源:发表于2016-12-02 10:09 被阅读80次

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

    // 设置状态栏和标题栏. 使用上面的增加和一个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;
        }
    

    布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:background="#FFDEAD"
                  android:id="@+id/ll_title_layout"
                  android:layout_width="match_parent"
                  android:layout_height="50dp">
        <TextView
            android:layout_width="match_parent"
            android:id="@+id/tv_status_bar_tv"
            android:layout_weight="1"
            android:layout_height="0dp"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
            <Button
                android:id="@+id/btn_titlebar_qr_code"
                style="@style/btn_titlebar_style"
                android:text="二维码"
                />
            <TextView
                android:id="@+id/tv_titlebar"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_gravity="center"
                android:textAlignment="center"
                android:paddingTop="10dp"
                android:textSize="20sp"
                android:text="标题"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/btn_titlebar_setting"
                style="@style/btn_titlebar_style"
                android:text="设置"/>
    
        </LinearLayout>
    
    
    </LinearLayout>
    

    二 , 隐藏标题栏 和 状态栏

    (修改主题Style)

    隐藏标题栏

    <item name="windowNoTitle">true</item>
    

    隐藏状态栏(全屏)

    <item name="android:windowFullscreen">true</item>
    

    三 , 取消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 开发错题本

          本文链接:https://www.haomeiwen.com/subject/ylwfmttx.html