自定义Android状态栏

周宏伯
2023-12-01

1. 将导航栏和状态栏设置为透明

        (1)自定义BaseActivity,继承AppCompatActivity类;

public class BaseActivity extends AppCompatActivity{
    public static Context mInstance = null;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /*设置成透明导航栏和透明状态栏*/
        setScreen(this);
    }

   /**
     * 将指定的activity设置成透明导航栏和透明状态栏
     *
     * @param activity 设置的对象
     */
    public void setScreen(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            activity.getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            activity.getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        } else {
          activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
    }
}

        (2)在需要设置自定义状态栏的Activity类添加如下代码,继承自定义的BaseActivity类;

public class LoginActivity extends BaseActivity {
    //TODO  ...
}

2. 自定义状态栏主题

        在styles.xml中添加如下内容:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@color/white</item>
        <item name="android:windowNoTitle">true</item>
    </style>

3. 应用自定义的状态栏主题

        在AndroidManifest.xml文件中,为application标签添加如下属性,若已经设置了该属性,则将属性值修改为如下的值:

android:theme="@style/AppTheme"

4. 自定义状态栏布局

        在需要使用自定义状态栏的activity.xml布局文件中添加如下代码:

    <!--  顶部工具栏 -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="77dp">

        <!-- 返回图标 -->
        <ImageView
            android:id="@+id/login_signout_iv"
            style="@style/tt_iv" />

        <!-- 文字"退出" -->
        <TextView
            android:id="@+id/login_signout_tv"
            style="@style/tt_tv"
            android:layout_toRightOf="@id/login_signout_iv"
            android:text="@string/toolbar_exit" />

        <!-- 文字“登录” -->
        <TextView
            style="@style/tt_tv"
            android:layout_centerInParent="true"
            android:text="@string/login" />
    </RelativeLayout>

        另外,自定义状态栏中使用到的styles如下,将如下的代码添加到styles.xml中即可;

    <!--+++++++++++++++++++++++++++++++++++  Title标题 ++++++++++++++++++++++++++++++++++++++++++++ -->
    <style name="tt_iv">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_alignParentBottom">true</item>
        <item name="android:layout_marginLeft">12dp</item>
        <item name="android:layout_marginBottom">15dp</item>
        <item name="android:background">@drawable/title_im</item>
    </style>

    <style name="tt_tv">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>j
        <item name="android:layout_alignParentBottom">true</item>
        <item name="android:layout_marginLeft">8dp</item>
        <item name="android:layout_marginBottom">18dp</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:textSize">23sp</item>
    </style>

 类似资料: