首先需要设置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));
这就是最终效果图,有什么不懂可以评论问我。