답변:
app:elevation="0dp"
"AppBarLayout"내부를 사용 하여 그림자를 제거하십시오. 그것은 항상 나를 위해 일했습니다. 그것이 당신을 위해 작동하기를 바랍니다.
setOutlineProvider
이 문제는 API 버전> = 21 인 경우 에만 발생합니다 . 고도를 변경하지 않으려면 다음을 사용할 수 있습니다.
appBar.setOutlineProvider(null);
API 버전을 확인하는 것을 잊지 마십시오
편집하다 :
Blow는의 소스 코드입니다 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();
}
그것은 말한다 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.
따라서 그림자를 제거 하려면을 설정하는 대신이 방법을 사용하는 것이 좋습니다 app:elevation
. 그림자를 제거하기 위해 고도를 변경하는 것은 일종의 부작용 인 것 같습니다. 그리고 고도를 변경하면 경우에 따라 다른 문제가 발생할 수 있습니다.
사용하지 않는 사람들 모두 bringToFront()
와 elevation="0dp"
(가) 사라 도구 모음합니다 :
app:elevation="0dp"
와 합쳐서 android:translationZ="0.1dp"
날 위해 일했습니다.
<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>
최신 appcompat 버전에서는 app:elevation="0.1dp"
xml 의 트릭 설정 이 더 이상 작동하지 않습니다.
지금까지 두 가지 해결책을 찾았습니다.
을 설정하는 대신 app:elevation
stateListAnimator를 사용하십시오. 예를 들어, 코드에서 :
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);
}
더 쉬운 방법은 여전히 app:elevation="0dp"
xml에서 정상적으로 설정하는 것 입니다.
appBarLayout.bringToFront();
신용은 다음 두 가지 토론으로 이동합니다.
시도 app:elevation="0dp"
했지만 도구 모음이 사라졌지 만 사용 app:elevation="0.1dp"
하여 트릭 을 만들었습니다.
이것이 다른 사람에게 도움이되기를 바랍니다.
v25.0.0
.
AppBarLayout에 app : elevation = "0dp"를 추가합니다. 이 예처럼
<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>
프로그래밍 방식으로 다음을 사용할 수 있습니다. getSupportActionBar (). setElevation (0.0f);