Android 开发错题本
2016-12-02 本文已影响80人
王世军Steven
一 设置标题栏 和 状态栏相同背景色.
// 设置状态栏和标题栏. 使用上面的增加和一个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());