Android 지원 디자인 라이브러리와 함께 제공되는 FAB에 그림자를 추가하는 방법은 무엇입니까?
제목은 꽤 자명하다.
다음 코드는 플로팅 작업 버튼 아래에 그림자를 렌더링하지 않습니다. 그림자를 렌더링하려면 어떻게해야합니까? 이 기능은 API 21 이상에서도 실제로 지원되지 않습니까?
<android.support.design.widget.FloatingActionButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/ic_add"
android:clickable="true" />
참고 : 추가 android:elevation
는 API 21에 그림자를 추가 하지 않습니다.
dandar3의 예제에서 가져온 스크린 샷 : https://github.com/dandar3/android-support-design
간단히 설정하면 app:borderWidth="0dp"
이 문제가 해결됩니다.
참고 :xmlns:app="http://schemas.android.com/apk/res-auto"
루트 레이아웃 에 추가 하는 것을 잊지 마십시오 .
이 문제 는 Android 디자인 라이브러리의 다음 릴리스에서 수정되어야합니다.
API 21+의 경우 app:borderWidth="0dp"
및 app:elevation="[number]dp"
. 원하는 그림자 크기를 제공하는 고도 설정 :
다음은 API 21+ 용 코드의 예입니다.
<android.support.design.widget.FloatingActionButton
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/locate_user_FAB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/location_off"
app:elevation="6dp"
app:borderWidth="0dp"
android:layout_above="@+id/take_taxi_FAB"
app:backgroundTint="@color/colorAccentGrey">
21 이하의 API (Android 4)에서 기억해야 할 중요한 사항 중 하나는 호환성 측면에서 FAB가 버튼 주위에 여백을 두어 그림자를 그립니다. 그런 다음 그렇게해야합니다 (현재이 코드를 사용하고 있으며 작동합니다).
<android.support.design.widget.FloatingActionButton
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/locate_user_FAB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/location_off"
app:elevation="6dp"
app:borderWidth="0dp"
android:layout_above="@+id/take_taxi_FAB"
android:layout_alignParentRight="true"
android:layout_marginRight="@dimen/map_FAB_marginRight"
android:layout_marginBottom="@dimen/locate_user_FAB_marginBottom"
app:backgroundTint="@color/colorAccentGrey">
나는 xmlns:app="http://schemas.android.com/apk/res-auto"
XML의 시작 부분에 넣는 것을 선호 하지만, 여러분에게 상기시키기 위해 여기에 넣었습니다.]
이 같은 문제가 발생했으며 AndroidManifest.xml에서이 태그를 삭제하여 작동하게했습니다.
android:hardwareAccelerated="false"
처음에는과 함께 추가했습니다 android:largeHeap="true"
. 표시된 곳에 많은 포인트가있는 HeatMap에 필요하다고 생각했기 때문에 android:largeHeap="true"
.
이것이 여전히 일부에서 작동하지 않는다면 다음 사이에 상당한 차이가 있습니다.
app:elevation="6dp"
app:borderWidth="0dp"
과
app:borderWidth="0dp"
app:elevation="6dp"
순서는 어떤 이유로 중요해 보이며 (첫 번째 순서는 작동하고 두 번째는 작동하지 않음) 지원 라이브러리 23.3.0에서 가져온 것입니다.
프로젝트 또는 애플리케이션 태그의 라이브러리에서 매니페스트를 확인하고 삭제 합니다.
android:hardwareAccelerated="false"
android:largeHeap="true"
그러나 이러한 옵션이 필요한 경우 그림자 및 변형 애니메이션이 작동하지 않습니다.
도움이된다면 나는 사용하고 있었다
android:tint="@color/myColor"
대신에
android:backgroundTint="@color/myColor".
색조를 backgroundTint로 대체하면 그림자가 다시 나타납니다.
'programing' 카테고리의 다른 글
Python 스크립트를 다른 스크립트로 가져 오시겠습니까? (0) | 2021.01.18 |
---|---|
새 연결을 생성하지 않고 몽구스 연결 상태 확인 (0) | 2021.01.18 |
배열에 값이 있는지 확인 (AngularJS) (0) | 2021.01.17 |
Android MVP : Interactor 란 무엇입니까? (0) | 2021.01.17 |
연도를 4 자리에서 2 자리로 변환하고 다시 C #으로 변환 (0) | 2021.01.17 |