6

içeriğini örtüşür AppBarLayout nasıl oluşturulur. Varsayılan olarak CoordinatorLayout + AppBarLayout, araç çubuğu ve kaydırma içeriğinin birbiriyle çakışmadan üst üste gelmesini sağlayacak şekilde düzenler.</strong> altında Çubuğu bazı şeffaf renk kullanarak ve içeriğini kaplayan yani AppBarLayout, <strong>olması ben içeriği gereken bazı faaliyetleri <code>AppBarLayout</code> ile <code>CoordinatorLayout</code> kullanırken CoordinatorLayout

Android geliştirici kılavuzları bu here belgelerine var ve şuna benzer (ama o bayraklar AppCompat Araç Çubuğu ve çalışmak için görünmüyor - Denedim):

Overlaying ActionBar

Yani bir şeye ihtiyacım olduğunu Yukarıdaki resimde göründüğü gibi, ancak CoordinatorLayout + AppBarLayout tarafından sağlanan tüm kaydırma hediyeleriyle. Ve CollapsingToolbarLayout'u kullanmaya gerek yok - sadece bu basit olanı.

Bunu nasıl gerçekleştireceğinize dair ipuçları var mı? İşte benim etkinlik düzenim. Eğer FrameLayout gelen hattını

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

kaldırırsanız

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/top_content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <android.support.design.widget.AppBarLayout 
     android:background="@android:color/transparent" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     > 
     <include layout="@layout/main_toolbar"/> 
    </android.support.design.widget.AppBarLayout> 
    <FrameLayout 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     > 
     <!-- to be filled by content fragment --> 
    </FrameLayout> 
    <android.support.design.widget.FloatingActionButton 
     style="@style/FabStyle" 
     android:id="@+id/fab_button" 
     android:src="@drawable/bt_filters" 
     /> 
</android.support.design.widget.CoordinatorLayout> 
+0

http://inthecheesefactory.com/blog/android-design-support -library-codelab/tr –

+0

@JudeFernandes, bu, belirli bir görüntü tarafından desteklenen "CollapsingToolbarLayout" ile bir kurulumu açıklar. Başka bir durumu anlattım - şeffaf araç çubuğunun altında olmak için ** içeriğin ** içeriğine ihtiyacım var. Ve yukarıda değindiğim gibi "CollapsingToolbarLayout" 'a ihtiyacım yok. – dimsuz

+0

AppBar'ınız içerik için kaydırırken hala gizlemek/göstermek zorunda mıdır, yoksa statik kalabilir mi? Yalnızca Araç Çubuğunun altında olması gereken Etkinlik arka planı mı yoksa etkinlik içeriği mi? –

cevap

3

Bu çözümü denedim, işe yarıyor.

asetat: AppBarLayout arka plan ilave edildi ve AppBarLayout

<android.support.design.widget.AppBarLayout 
android:id="@+id/app_bar_layout" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#00000000" > 

içerik konumlandırma önce düzeninde kaydırma görünümü yer: Yeni AppbBarTransparentScrollingViewBehavior updateOffset()-offset = 0

onDependentViewChanged() geçersiz kılma ve değiştirerek AppBarLayout.ScrollingViewBehavior genişletilmiş
@Override 
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, 
     View dependency) { 
    updateOffset(parent, child, dependency); 
    return false; 
} 

private boolean updateOffset(CoordinatorLayout parent, View child, 
     View dependency) { 
    final CoordinatorLayout.Behavior behavior = ((CoordinatorLayout.LayoutParams) dependency 
      .getLayoutParams()).getBehavior(); 
    if (behavior instanceof Behavior) { 
     // Offset the child so that it is below the app-bar (with any 
     // overlap) 
     final int offset = 0; // CHANGED TO 0 
     setTopAndBottomOffset(offset); 
     return true; 
    } 
    return false; 
} 

yeni içeriğin davranış i Ana Arka Plan görüntüsü vermeye çalıştım İşte

enter image description here

+0

tüm yığın akışındaki tek cevap ve daha fazlası, 'com.android.support:appcompat-v7:23.1.1' olarak çalışıyor. GG dostum, bir milyona teşekkürler! – kellogs

+2

Harika cevap. Özel davranışınızı tanımlarken bağlam ve öznitelikSet params (simly call 'super()') ile bir kurucu eklemeyi unutmayın, aksi takdirde düzeni şişirirken bazı sorunlar alırsınız. – fstephany

3

, içerik Toolbar tarafından üst üste edilecektir. Umarım yardımcı olur.

DÜZENLEME: Kayan güzellere ihtiyacın olduğundan bahsetmişsiniz, bu gerçekten bir çözüm değildir.

1

kaydırma görünüm olarak bir NestedScrollView içinde bir ImageView ile: view

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

sonuç kaydırma ayarlanmış davranış windowBackground ve ToolBar/ActionBar Arka Planı Saydam olarak. Tarzında belirtmiş olduğum Stil. Pencere arka plan değişiklikleri, gerektiğinde yapılabilir.yarı şeffaf bir arka plan ile AppBar ile Menifest içinde Stil

<style name="AppThemeSliderToolbar" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:windowBackground">@drawable/t_img</item> 
     <item name="colorPrimary">#ff5b45</item> 
     <item name="colorPrimaryDark">#FF5722</item> 
    </style> 

Düzen

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/appbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#50000000" 

      > 
      <!--Change Opacity background as per required ..android:background="#50000000"--> 
      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_scrollFlags="scroll|enterAlways" /> 
     </android.support.design.widget.AppBarLayout> 

     <FrameLayout 
      android:id="@+id/frgmentcontainer" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/appbar"></FrameLayout> 


    </RelativeLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|right" 
     android:layout_marginBottom="20dp" 
     android:layout_marginRight="20dp" 
     android:src="@android:drawable/ic_dialog_email" 
     app:fabSize="normal" /> 
</android.support.design.widget.CoordinatorLayout> 

UPDATE

CollapsingToolbarLayout yorumla ilgili görüşümüze göre.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    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" 
    tools:context=".ScrollingActivity"> 

    <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" 
     android:fitsSystemWindows="true" android:layout_height="@dimen/app_bar_height" android:background="#00FFFFFF" 
     android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" 
      android:fitsSystemWindows="true" android:layout_width="match_parent" 
      android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:contentScrim="?attr/colorPrimary"> 

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

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

    <include layout="@layout/content_scrolling" /> 

    <android.support.design.widget.FloatingActionButton android:id="@+id/fab" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" app:layout_anchor="@id/app_bar" 
     app:layout_anchorGravity="bottom|end" android:src="@android:drawable/ic_dialog_email" /> 

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

content_scrolling.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.NestedScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:showIn="@layout/activity_scrolling" android:layout_width="match_parent" 
    android:layout_height="match_parent" tools:context=".ScrollingActivity"> 
    <FrameLayout android:id="@+id/framcontainer" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"></FrameLayout> 

</android.support.v4.widget.NestedScrollView> 

Stil Manifest'te Faaliyet Verilen.

<style name="AppThemeSliderToolbar" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:windowBackground">@drawable/t_img</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="windowActionBarOverlay">true</item> 
     <item name="colorPrimary">@android:color/transparent</item> 
    </style> 

ScrollingActivity

public class ScrollingActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_scrolling); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
     getSupportFragmentManager().beginTransaction(). 
       replace(R.id.framcontainer, new HomeFragment(), "Home").commit(); 
    } 

} 

Home2

public class Home2 extends Fragment { 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.home_2, container, false); 
    } 
} 

HomeFragment

public class HomeFragment extends Fragment { 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.homefragment, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     view.findViewById(R.id.txt).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       getActivity().getSupportFragmentManager().beginTransaction() 
         .replace(R.id.framcontainer, new Home2(), "Home2").addToBackStack("Home2").commit(); 
      } 
     }); 
    } 
} 

Ekran Görüntüsü url. i Güncelleme Ans itibaren güncellenmiş Ans http://i.stack.imgur.com/5cVOw.jpg
HomeFragment önce URL

verdik Önlenebileceğini Ambeding görüntüleri> güncellenen Ans itibaren http://i.stack.imgur.com/UF8LW.jpg
Home2 http://i.stack.imgur.com/cD480.jpg

+0

, parça düzeninde yeni araç çubuğu oluşturmadan fragmanda aynı şeyi yapabilir miyiz? – user2095470

+0

@ user2095470 Burada normalde etkinlikte fragman & ToolBar kullandım. Daha fazla açıklayabilir misiniz, böylece deneyebilirim? – user1140237

+0

Çabalarınız için teşekkürler. Sadece bu parçada katlanabilir görüntü ekleyebileceğinizi düşünüyor musunuz? (uygulamasında 1'den fazla fragman olduğunu varsayarak) Ve diğer tüm parçaların daraltılmış görünümü olmayan normal etkinlik araç çubuğu olacaktır. – user2095470

İlgili konular