6

Tôi đang cố gắng để kết hợp windowTranslucentStatusAppBarLayout với Toolbar gắn cờ với app:layout_scrollFlags="scroll|enterAlways"Sử dụng windowTranslucentStatus với Thanh công cụ ẩn

kiểm tra đồng thời trên API 18, 19 và 22 (từ trái sang).

Case study

Vấn đề là trên API cao nhất, nơi thanh công cụ là partialy thể nhìn thấy dưới thanh trạng thái. Tôi đã thử rất nhiều sự kết hợp của phong cách nhưng đây là gần nhất tôi nhận được.

Trong phong cách tôi sử dụng:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:colorPrimary" tools:targetApi="lollipop">@color/primary</item> 
    <item name="android:colorPrimaryDark" tools:targetApi="lollipop">@color/primary_dark</item> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/primary</item> 
    <item name="android:colorAccent" tools:targetApi="lollipop">@color/primary</item> 
    <item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item> 
    <item name="android:windowBackground">@color/background</item> 
    <item name="android:windowActionBarOverlay">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
</style> 

Đây là xml bố trí của tôi:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/coordinator_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="?attr/colorPrimary" 
android:fitsSystemWindows="true"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:minHeight="?attr/actionBarSize" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

</android.support.design.widget.AppBarLayout> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/background" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


<android.support.design.widget.FloatingActionButton 
    android:id="@+id/add_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:backgroundTint="@color/green" 
    app:layout_anchor="@id/recycler_view" 
    app:layout_anchorGravity="bottom|right|end" /> 

Tôi tạo ra ứng dụng mẫu, trong đó có sẵn trên github

Có gì thiếu trong câu đố này không?

Trả lời

4

Đã sửa lỗi. Nó có thể không phải là giải pháp đẹp nhất, nhưng nó wokrs (thử nghiệm trên 19 và 22). Tôi đã thêm một lề âm vào bố trí điều phối viên và một lề dương cho thanh công cụ (25dp vì đây là chiều cao của thanh trạng thái).

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/coordinator_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="?attr/colorPrimary" 
    android:fitsSystemWindows="true" 
    android:layout_marginTop="-25dp"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:minHeight="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      android:layout_marginTop="25dp"/> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/background" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/add_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:backgroundTint="@color/green" 
     app:layout_anchor="@id/recycler_view" 
     app:layout_anchorGravity="bottom|right|end" /> 

</android.support.design.widget.CoordinatorLayout> 

enter image description here

+0

Điều đó thực sự có thể hoạt động ... sẽ kiểm tra sau –

+0

Tách tốt, làm việc trên tất cả 3 API được tôi đề cập! :) –

+0

Vui vì tôi có thể giúp :) – crysxd

0

Bạn đã thử đặt các thông số sau vào số RecyclerView?

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Tôi nghĩ cần thiết để nó hoạt động với CoordinatorLayout. Đồng thời kiểm tra xem phiên bản com.android.support:recyclerview-v7 của bạn có được cập nhật hay không.

+0

Tôi đã làm, phải xóa nó khỏi mã vô tình –

1

tôi cố định nó bằng cách thiết lập

android:fitsSystemWindows="false" on CoordinatorLayout. 

Hy vọng rằng sẽ giúp bạn cũng!

+0

xe tăng hoạt động chính xác – HPbyP

Các vấn đề liên quan