将库升级到 android 23.2.1 后,状态栏的默认高度显示不正确
Default height of status bar is not showing properly after upgrade library to android 23.2.1
我正在开发一个应用程序,需要应用底页对话框,所以我将 android.supppcom.android.support:design:23.1.1 更新为 com.android.support:设计:23.2.1。一切正常,但问题来了。
- 状态栏的默认高度比正常宽(假设默认为 10dp 现在高度为 30dp)。
- 在Android工作室的预览中预览就可以了。
我不知道它是如何工作的,所以任何人都可以帮助我 this.Please 找到 gradle 信息。
谢谢
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.inkapplications.viewpageindicator:library:2.4.3'
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
compile 'commons-codec:commons-codec:1.9'
// compile 'com.android.support:multidex:1.0.0'
compile 'com.codesnippets4all:quick-json:1.0.4'
// compile 'javax.persistence:persistence-api:1.0'
// compile 'com.android.support:design:23.1.1'
compile 'com.android.support:design:23.2.1'
// compile 'com.android.support:cardview-v7:23.1.1'
compile 'com.android.support:cardview-v7:23.2.1'
// compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
// compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:appcompat-v7:23.2.1'
// compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:support-v4:23.2.1'
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbarAppHome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/frag_placeholder"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="@color/colorPrimaryDark"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/tab_home"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_home_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab_tournament"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_group_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab_team"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_group_work_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab_notification"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_notifications_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
</LinearLayout>
上面添加的是 activity 视图的 XML 代码,它在应用程序启动时启动。这个 activity 在中心有一个框架布局。该框架布局显示一个片段说 fragmentA。这是此片段的 XML 查看代码。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="#F8F8FF">
<android.support.v7.widget.RecyclerView
android:id="@+id/appHomeRecycleView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/xyz1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:scaleType="center"
android:src="@drawable/ic_mode_edit_white_24dp" />
</android.support.design.widget.CoordinatorLayout>
一般来说,您应该不假定状态栏的高度是固定的(尤其是针对不同制造商的旧设备时)。我曾经这样做并后悔 :p AFAIK ScrimInsetsFrameLayout(或类似的)是去这里的方式,见https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/ScrimInsetsFrameLayout.java
感谢您的回复。我研究了 10 多个小时,终于找到了解决方案。这是解决方案:
在fragmentA布局里面可以看到一个参数XML文件:
android:fitsSystemWindows="true"
将此参数更改为 false 为:
android:fitsSystemWindows="false"
坦率地说,我不明白为什么这不适用于新库 23.2.1,但它在 23.1.1 版本中运行良好。
希望这对其他人有所帮助。
谢谢
普拉巴卡
我正在开发一个应用程序,需要应用底页对话框,所以我将 android.supppcom.android.support:design:23.1.1 更新为 com.android.support:设计:23.2.1。一切正常,但问题来了。
- 状态栏的默认高度比正常宽(假设默认为 10dp 现在高度为 30dp)。
- 在Android工作室的预览中预览就可以了。
我不知道它是如何工作的,所以任何人都可以帮助我 this.Please 找到 gradle 信息。 谢谢
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.inkapplications.viewpageindicator:library:2.4.3'
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
compile 'commons-codec:commons-codec:1.9'
// compile 'com.android.support:multidex:1.0.0'
compile 'com.codesnippets4all:quick-json:1.0.4'
// compile 'javax.persistence:persistence-api:1.0'
// compile 'com.android.support:design:23.1.1'
compile 'com.android.support:design:23.2.1'
// compile 'com.android.support:cardview-v7:23.1.1'
compile 'com.android.support:cardview-v7:23.2.1'
// compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
// compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:appcompat-v7:23.2.1'
// compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:support-v4:23.2.1'
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbarAppHome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/frag_placeholder"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="@color/colorPrimaryDark"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/tab_home"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_home_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab_tournament"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_group_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab_team"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_group_work_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab_notification"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_notifications_white_24dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lable"/>
</LinearLayout>
</LinearLayout>
上面添加的是 activity 视图的 XML 代码,它在应用程序启动时启动。这个 activity 在中心有一个框架布局。该框架布局显示一个片段说 fragmentA。这是此片段的 XML 查看代码。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="#F8F8FF">
<android.support.v7.widget.RecyclerView
android:id="@+id/appHomeRecycleView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/xyz1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:scaleType="center"
android:src="@drawable/ic_mode_edit_white_24dp" />
</android.support.design.widget.CoordinatorLayout>
一般来说,您应该不假定状态栏的高度是固定的(尤其是针对不同制造商的旧设备时)。我曾经这样做并后悔 :p AFAIK ScrimInsetsFrameLayout(或类似的)是去这里的方式,见https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/ScrimInsetsFrameLayout.java
感谢您的回复。我研究了 10 多个小时,终于找到了解决方案。这是解决方案:
在fragmentA布局里面可以看到一个参数XML文件:
android:fitsSystemWindows="true"
将此参数更改为 false 为:
android:fitsSystemWindows="false"
坦率地说,我不明白为什么这不适用于新库 23.2.1,但它在 23.1.1 版本中运行良好。
希望这对其他人有所帮助。
谢谢
普拉巴卡