• Stars
    star
    119
  • Rank 297,930 (Top 6 %)
  • Language
    Java
  • Created almost 9 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

适应Statusbar与NavigationBar的各种Layout

FitSystemWindowLayout

自动适应StatusBar与NavigationBar的Layout。
原理:根据你的配置自动设置基于StatusBar与NavigationBar的padding。 方便的建立类似这样的APP screenshot

自动处理4.4以下,4.4,5.0以上及有无虚拟按键以及横屏竖屏的各种复合情况下的FrameLayout,LinearLayout,RelativeLayout3种布局(好累...)

依赖

compile 'com.jude:fitsystemwindowlayout:2.1.5'

XML配置

在value中的styles.xml中设置

<!-- Base application theme. -->
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
</style>
<style name="AppTheme" parent="AppTheme.Base"></style>

在value-v19中的styles.xml中设置

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

在value-v21中的styles.xml中设置

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>

然后使用AppTheme这个主题,这是1个示例,应该看得出来吧。只要在你的AppTheme的v19版本和v21版本添加了相应属性就好。

使用

在根节点使用 FitSystemWindowsFrameLayout
FitSystemWindowsLinearLayout
FitSystemWindowsRelativeLayout
就像:

<com.jude.fitsystemwindowlayout.FitSystemWindowsLinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">

    <include layout="@layout/include_toolbar"/>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
    
</com.jude.fitsystemwindowlayout.FitSystemWindowsLinearLayout>

3个基本属性

3种Layout都有这3个基本属性。

app:padding_status="false"//默认为true
app:padding_navigation="true"//默认为false
app:status_color="#567890"//默认为colorPrimary,

`padding_status`会自动增加StatusBar的位置的Padding,颜色默认是主题里的`ColorPrimary`;  
`padding_navigation`会自动增加NavigationBar位置的Padding。  

默认效果是不能使用StatusBar的位置,可以使用NavigationBar的位置。

对子View的单独属性配置

对每个自己直接子View指定属性:(LinearLayout无效,都明白..)

app:margin_status="false"
app:margin_navigation="true"

这2个属性优先级比基本属性高。可以对每个View指定与StatusBar和NavigationBar的关系。 例:

<com.jude.fitsystemwindowlayout.FitSystemWindowsFrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:padding_status="false"//不自动腾出StatusBar的空间,为了让图片在StatusBar下绘制
    tools:context="com.jude.demo.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?actionBarSize"
        android:background="#0000"//透明ToolBar
        app:theme="@style/AppTheme.Dark"
        app:margin_status="true"//让ToolBar去适应StatusBar
        />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:margin_navigation="true"//让FAB去适应NavigationBar
        android:src="@android:drawable/ic_dialog_email" />

</com.jude.fitsystemwindowlayout.FitSystemWindowsFrameLayout>

可滑动View的内Padding处理

如果可滑动View的最后一个View这样显示。
screenshot
那就没办法点击了。需要给它加一个内Padding。
所以可以给可滑动View添加这个属性(给需要的子View加)
app:padding_navigation="true"
就像这样:

<ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:padding_navigation="true"
        />

或者适用com.jude.fitsystemwindowlayout.Utils.paddingToNavigationBar(view) 这个属性只适用于可滑动View(ListView,RecyclerView,ScrollView等)。其他View无效。

详见demo License

Copyright 2016 Jude

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

EasyRecyclerView

ArrayAdapter,pull to refresh,auto load more,Header/Footer,EmptyView,ProgressView,ErrorView
Java
2,028
star
2

SwipeBackHelper

make your activity can swipe to close
Java
1,382
star
3

RollViewPager

A ViewPager can auto play and loop
Java
913
star
4

Beam

MVP开发框架
Java
617
star
5

Utils

android 各种工具库
Java
287
star
6

Joy

豆逼APP源码
Java
122
star
7

RequestVolley

基于Volley的便捷网络请求库
Java
91
star
8

JCenter

上传Jcenter的gradle配置
60
star
9

Fishing

空钩 APP
Java
57
star
10

Ferryman

Android页面路由跳转框架
Java
42
star
11

SMSSDK

一个可以便捷使用短信验证的库
Java
31
star
12

Know

问答社区APP。新技术Demo向。
Java
30
star
13

Interceptor

Java
21
star
14

ImageProvider

图片提供者,从系统,相册,网络提供图片。
Java
17
star
15

ExGridView

可动态添加高度适应的GridView
Java
16
star
16

FloatActionView

基于Adapter的Float Action Button.仿Evernote
Java
13
star
17

TAGView

colorful tag with icon
Java
12
star
18

GeassClient

Android Root开发支持库
Java
11
star
19

KeyChain

PasswordBox APP
Java
11
star
20

ActivitySlider

activity跟随手势滑动关闭
Java
11
star
21

EmotionShow

外包!!!
Java
10
star
22

lifeline

Java
9
star
23

LifeGame

生命游戏Android版
Java
9
star
24

know_web

逼乎web端
PHP
8
star
25

JobGod2

诚客兼职APP
Java
8
star
26

2016WinterHomeWork

红岩移动Android2016寒假作业
6
star
27

Jarvis

Java
5
star
28

Texas

华为杯智能大赛德克萨斯扑克AI
Java
4
star
29

AndroidFrameWork

Android部分机制原理的简单模型
Java
4
star
30

Automobile

上云配
Java
3
star
31

SBReader

String Buffer Analysis Tool
Java
3
star
32

LBSChat

地图社交demo
Java
3
star
33

Jude95.github.io

CSS
3
star
34

EasyCrypto

Crypto tool for java
Java
3
star
35

Happiness

半个外包只是一部分界面
Java
2
star
36

FunctionGraph

逗B的控制台版函数图像显示器
Java
2
star
37

Album

Java
1
star
38

rollup-plugin-workbox-build

Rollup plugin to apply workbox-build
JavaScript
1
star