5

Tôi có hoạt động với NavigationDrawer và AppBarLayout bằng Thanh công cụ. Thật không may khi tôi đang sử dụng TabLayout trong đoạn con tôi thấy bóng giữa thanh công cụ và TabLayout. Có thể hiển thị bóng tối dưới TabLayout chỉ? Tôi không muốn chuyển TabLayout sang hoạt động của mình vì tôi chỉ sử dụng nó trong một đoạn.Cách sử dụng Android AppBarLayout, Thanh công cụ và TabLayout với các đoạn

tôi có thể thấy vài giải pháp cho vấn đề này:

  • vô hiệu hóa cao trên Thanh công cụ & TabLaout (không thích nó) trên thanh công cụ
  • remove từ hoạt động và di chuyển nó vào mảnh

Bạn có bất kỳ ý tưởng làm thế nào để sử dụng nó đúng trong kịch bản của tôi?

Wrong drop shadow

+0

Remove độ cao và nền từ Thanh công cụ và áp dụng nó vào AppBarLayout để thay thế. –

+0

@EugenPechanec Tôi không chắc chắn nếu nó sẽ giúp bởi vì TabLayout không phải là bên trong AppBarLayout ... – radzio

+0

Đặt nó vào lúc đó. https://github.com/chrisbanes/cheesesquare/blob/master/app/src/main/res/layout/include_list_viewpager.xml –

Trả lời

2

Tôi gặp vấn đề tương tự và dễ sửa. Chỉ cần xóa AppBarLayout khỏi hoạt động và đặt nó vào đoạn. Bằng cách đó, bạn giữ Thanh công cụ trong hoạt động và TabLayout với bóng trong đoạn.

Hoạt động:

<?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" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 


    <FrameLayout 
     android:id="@+id/main_activity_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </FrameLayout> 


</LinearLayout> 

Fragment:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:fitsSystemWindows="true" 
    tools:context=".MainActivity"> 


    <android.support.design.widget.AppBarLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/view_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    </android.support.v4.view.ViewPager> 


</LinearLayout> 

Hy vọng rằng sẽ giúp!

+0

Trong câu hỏi, nó đã được tuyên bố rằng "vô hiệu hóa độ cao trên Thanh công cụ & TabLayout" là không mong muốn. Loại bỏ TabLayout về cơ bản giống như thiết lập độ cao của TabLayout thành 0 tôi nghĩ. – xxtesaxx

0

Vượt qua cùng một câu hỏi. Trong Hoạt động của tôi, tôi sử dụng AppBarLayout với Thanh công cụ và trong một trong các Phân đoạn của tôi, tôi cũng sử dụng một AppBarLayout với một TabLayout. Tuy nhiên, trên tất cả các mảnh vỡ khác tôi hiển thị trên hoạt động này, tôi không. Do đó, tôi chỉ muốn độ cao là 0 trên Fragment với TabLayout.

tôi endet lên thiết lập độ cao bằng tay mỗi khi tôi chuyển mảnh:

private void showAccount(){ 
    AccountFragment accountFragment = AccountFragment.newInstance(mUser); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction() 
      .replace(R.id.content_main, accountFragment) 
      .commit(); 
    elevateActionBar(false); 
} 

private void showSettings(){ 
    SettingsFragment settingsFragment = new SettingsFragment(); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction() 
      .replace(R.id.content_main, settingsFragment) 
      .commit(); 
    elevateActionBar(true); 
} 

private void elevateActionBar(boolean elevate){ 
    //Elevate ActionBar (make ActionBar have a shadow) 
    AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.app_bar_layout_main); 
    if(elevate) { 
     appBarLayout.setElevation(4); 
    }else{ 
     appBarLayout.setElevation(0); 
    } 
} 
Các vấn đề liên quan