您的位置:首页 > 其它

关于在安卓4.4上实现沉浸式状态栏

2015-05-24 11:49 441 查看
首先需要设置actionbar和状态栏透明,并且还要设置no title,这一系列动作我提取了一个类,在静态方法里完成。

package com.liran.mobileSafe.utils;

import com.liran.mobileSafe.R;

import android.app.Activity;
import android.graphics.Color;
import android.os.Build;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;

public class ColorActionBar {

	private static LinearLayout color_actionbar_layout;
	private static Activity activity;
	public static void setActionBar(Activity activity)
	{
		activity=activity;
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
			Window window = activity.getWindow();
			window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
					WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

		}
		activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		
	}
	
/*	public static void setActionBarColor(int color)
	{
		
		color_actionbar_layout=(LinearLayout) activity.findViewById(R.id.color_actionbar_layout);
		color_actionbar_layout.setBackgroundColor(color);
		
	}*/   注释着一段就不要看了,之前这样写是错的。。具体忘了什么原因了,所以我采用了自定义的布局
	
}


只需要在setContentView(R.layout.activity_lost_find);之前通过 ColorActionBar.setActionBar(this);这行代码调用就行

下面是我的自定义布局里面的代码,这里我继承了LinearLayout

package com.liran.mobileSafe.view;

import com.liran.mobileSafe.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyColorLayout extends LinearLayout {

	
	private TextView titleText;
	
	private void initView(Context context){
		View.inflate(context, R.layout.color_actionbar_viewgroup,this);
		titleText=(TextView)findViewById(R.id.color_actionbar_title);
		
	}
	
	public MyColorLayout(Context context) {
		super(context);
		initView(context);
	}

	public MyColorLayout(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		initView(context);
	}

	public MyColorLayout(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView(context);
		String title=attrs.getAttributeValue("http://schemas.android.com/apk/com.liran.mobileSafe", "titletext");
		setmyText(title);
		//<span style="font-family: Arial, Helvetica, sans-serif;">titletext是自定义属性,我相信大家都还是可以看的懂得。  这里用到的获取自定义属性的方法 比较奇特,但是很方便</span>

	}
	
	
	
	public void setmyText(String text){
		titleText.setText(text);
	}

	
	
}
<pre name="code" class="html"> <declare-styleable name="MYColorLayout">
    <attr name="titletext" format="string"/>    
    </declare-styleable>
<!-- 这是自定义属性 -->



下面这个代码是我的自定义布局加载的代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
   	android:id="@+id/color_actionbar_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"  
    android:clipToPadding="true"
    android:fitsSystemWindows="true"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/color_actionbar_title"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="22sp" />

   

</LinearLayout>


这个是activity_lost_find.xml里面的代码

<com.liran.mobileSafe.view.MyColorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:liran="http://schemas.android.com/apk/com.liran.mobileSafe"
    android:id="@+id/lostfind_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    liran:titletext="手机防盗" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="aaaaaaaaaaaa"
            android:textColor="#000"
            android:textSize="30sp" />
    </LinearLayout>

</com.liran.mobileSafe.view.MyColorLayout>


基本上就这些了,大家可以直接把自定义布局拷不过用

可以通过这两句设置沉浸式状态栏的颜色

<span>		</span>myColorlayout=(MyColorLayout) findViewById(R.id.lostfind_layout);
<span>		</span>myColorlayout.setBackgroundColor(getResources().getColor(R.color.green));


这就是最终效果图,有什么不懂可以评论问我。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: