AppBarLayoutTasarım destek kitaplığında pencere öğesi kullanılırken , araç çubuğunun altında bir gölge belirir. Bu gölgeyi nasıl kaldırabilirim?
AppBarLayoutTasarım destek kitaplığında pencere öğesi kullanılırken , araç çubuğunun altında bir gölge belirir. Bu gölgeyi nasıl kaldırabilirim?
Yanıtlar:
app:elevation="0dp"Gölgeyi kaldırmak için "AppBarLayout" içinde kullanın . Benim için her zaman çalıştı. Umarım sizin için çalışır.
setOutlineProvider
bu sorun yalnızca api sürümü> = 21 olduğunda ortaya çıkar , yüksekliği değiştirmek istemiyorsanız şunu kullanabilirsiniz:
appBar.setOutlineProvider(null);
api sürümünü kontrol etmeyi unutmayın
DÜZENLE :
Blow, kaynak kodudur setOutlineProvider.
/**
* Sets the {@link ViewOutlineProvider} of the view, which generates the Outline that defines
* the shape of the shadow it casts, and enables outline clipping.
* <p>
* The default ViewOutlineProvider, {@link ViewOutlineProvider#BACKGROUND}, queries the Outline
* from the View's background drawable, via {@link Drawable#getOutline(Outline)}. Changing the
* outline provider with this method allows this behavior to be overridden.
* <p>
* If the ViewOutlineProvider is null, if querying it for an outline returns false,
* or if the produced Outline is {@link Outline#isEmpty()}, shadows will not be cast.
* <p>
* Only outlines that return true from {@link Outline#canClip()} may be used for clipping.
*
* @see #setClipToOutline(boolean)
* @see #getClipToOutline()
* @see #getOutlineProvider()
*/
public void setOutlineProvider(ViewOutlineProvider provider) {
mOutlineProvider = provider;
invalidateOutline();
}
Şöyle söylenir If the ViewOutlineProvider is null, if querying it for an outline returns false, or if the produced Outline is {@link Outline#isEmpty()}, shadows will not be cast.
Bu nedenle, gölgeyi kaldırmak istiyorsanız , ayarlamak yerine bu yöntemi kullanmalısınız app:elevation. Gölgeyi kaldırmak için yüksekliği değiştirmenin bir tür yan etki olduğu görülüyor. Ve yüksekliğin değiştirilmesi bazı durumlarda başka sorunlara neden olabilir.
Araç çubuğunu kullanmak istemeyen bringToFront()ve elevation="0dp"kaybolan herkes için :
app:elevation="0dp"ile taranmış android:translationZ="0.1dp"benim için çalıştı.
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:elevation="0dp"
android:translationZ="0.1dp"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@null"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>
En yeni appcompat sürümleriyle, xml'deki hile ayarı app:elevation="0.1dp"artık çalışmıyor.
Şimdiye kadar iki çözüm buldum.
Ayarlamak yerine app:elevationbir stateListAnimator kullanmayı deneyin. Örneğin, kodda:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
StateListAnimator stateListAnimator = new StateListAnimator();
stateListAnimator.addState(new int[0], ObjectAnimator.ofFloat(appBarLayout, "elevation", 0.1f));
appBarLayout.setStateListAnimator(stateListAnimator);
}
Daha kolay bir yol, app:elevation="0dp"xml'de normal olarak ayarlamanızdır , ancak kodda:
appBarLayout.bringToFront();
Kredi şu iki tartışmaya gider:
AppBarLayout için yükseklik ayarlarken ToolBar kayboluyor
uygulama ayarlandığında: elevation = "0dp" ve ardından hamburgermenu araç çubuğunda gösterilmiyor
Denedim app:elevation="0dp"ama araç çubuğu kayboldu, ancak kullanmak app:elevation="0.1dp"hile yaptı.
Umarım bu başka birine yardımcı olur.
v25.0.0.
AppBarLayout'unuza app: elevation = "0dp" ekleyin. bu örnek gibi
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:elevation="0dp"
android:theme="@style/AppTheme.AppBarOverlay">
<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" />
</android.support.design.widget.AppBarLayout>
Programlı olarak şunu kullanabilirsiniz: getSupportActionBar (). SetElevation (0.0f);