Saat menggunakan AppBarLayoutwidget di pustaka dukungan desain, bayangan muncul di bagian bawah toolbar. Bagaimana cara menghapus bayangan itu?
Saat menggunakan AppBarLayoutwidget di pustaka dukungan desain, bayangan muncul di bagian bawah toolbar. Bagaimana cara menghapus bayangan itu?
Jawaban:
Cukup gunakan app:elevation="0dp"di dalam "AppBarLayout" untuk menghapus bayangan. Itu selalu berhasil untuk saya. Semoga berhasil untuk Anda.
setOutlineProvider
masalah ini hanya terjadi ketika api versi> = 21, jika Anda tidak ingin mengubah ketinggian, Anda dapat menggunakan:
appBar.setOutlineProvider(null);
ingatlah untuk memeriksa versi api
EDIT:
Pukulan adalah kode sumber 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();
}
Dikatakan bahwa 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.
Jadi, jika Anda ingin menghapus bayangan, sebaiknya Anda menggunakan metode ini daripada pengaturan app:elevation. Tampaknya mengubah ketinggian untuk menghilangkan bayangan adalah semacam efek samping. Dan mengubah ketinggian dapat menyebabkan beberapa masalah lain dalam beberapa kasus.
Untuk semua yang tidak ingin menggunakan bringToFront()dan elevation="0dp"membuat bilah alat menghilang:
app:elevation="0dp"disisir dengan android:translationZ="0.1dp"bekerja untuk saya.
<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>
Dengan versi appcompat terbaru, setelan trik app:elevation="0.1dp"di xml tidak berfungsi lagi.
Sejauh ini saya telah menemukan dua solusi.
Alih-alih menyetel app:elevation, coba gunakan stateListAnimator. Misalnya dalam kode:
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);
}Cara yang lebih mudah adalah Anda tetap mengatur app:elevation="0dp"xml seperti biasa, tetapi dalam kode:
appBarLayout.bringToFront();Penghargaan diberikan untuk dua diskusi ini:
ToolBar menghilang saat menyetel ketinggian untuk AppBarLayout
ketika mengatur app: elevation = "0dp" maka hamburgermenu tidak muncul ke toolbar
Saya mencoba app:elevation="0dp"tetapi bilah alat hilang, tetapi menggunakan app:elevation="0.1dp"membuat trik.
Semoga ini bisa membantu orang lain.
v25.0.0.
Tambahkan app: elevation = "0dp" di AppBarLayout Anda. seperti contoh ini
<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>
Secara terprogram Anda dapat menggunakan ini: getSupportActionBar (). SetElevation (0.0f);