도구를 투명하게 만드는 방법은 무엇입니까?
레이아웃을 내리는 투명한 ActionBar는 자체 Q & A 게시물 입니다. 최신 지원 라이브러리로 마이그레이션 한 후 도구 모음을 위해 ActionBar를 제거해야합니다. 투명하게 만들어 해당 레이아웃을 완성하는 방법은 더 이상 작동하지 않습니다.
<style name="CustomActionBarTheme" parent="@android:style/Theme.AppCompat">
<item name="android:windowActionBarOverlay">true</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/TransparentActionBar</item>
</style>
<style name="TransparentActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@android:color/transparent</item>
</style>
액션 바를 숨기는 테마를 정의하고 투명한 배경으로 액션 바 스타일을 정의하고이 스타일을 위젯에 설정하기 만하면됩니다. 모든보기 트리에서해야합니다.
<style name="Theme.Custom" parent="@android:style/Theme.AppCompat">
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:windowActionBarOverlay">true</item>
</style>
<style name="CustomActionBar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
</style>
형세 :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Toolbar should be above content-->
<include layout="@layout/toolbar" />
</RelativeLayout>
툴바 레이아웃 :
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:theme="@style/CustomActionBar"/>
당신의 생성 toolbar.xml 파일을 AppBarLayout의 배경은 @null
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout
android:id="@+id/general_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Login"
android:textSize="20sp"/>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
결과는 다음과 가변적입니다.
Google의 예제 소스 코드를 확인하여 도구를 완전히 투명하게 만드는 방법을 알아 듣습니다. 생각보다 간단했습니다. 이와 같이 간단한 Shape 드로어 블을 생성하면됩니다.
드로어 블의 이름은 toolbar_bg
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient
android:angle="90"
android:startColor="@android:color/transparent"
android:endColor="@android:color/transparent"
android:type="linear" />
</shape>
그리고 조각이나 활동에 .. 이와 같은 도구 모음을 추가하십시오.
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@drawable/toolbar_bg"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
여기에는 완전히 투명한 도구 모음이 있습니다.
추가하지 <android.support.design.widget.AppBarLayout >
. 작동하지 않습니다.
참고 : AppBarLayout이 필요한 경우 그림자를 그리지 않도록 고도를 0으로 설정하십시오.
대답은 매우 간단합니다.
toolbar.getBackground().setAlpha(0);
style.xml에 다음 행을 추가하십시오.
<style name="Base.Theme.AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme" parent="Base.Theme.AppTheme">
</style>
이제 style-v21에 다음 줄을 추가합니다.
<style name="AppTheme" parent="Base.Theme.AppTheme">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
테마를 android : theme = "@ style / AppTheme"로 설정합니다.
상태 표시 줄을 투명하게 만듭니다.
android:background="@android:color/transparent"
앱바 레이아웃에 같이 추가 하세요.
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>`
다음 xml 코드를 사용하십시오.
레이아웃 코드 :
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/def_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/toolbarTransparent"
android:layout_alignParentTop="true" />
그리고 colors.xml에 다음 코드를 추가합니다 .
<color name="toolbarTransparent">#00FFFFFF</color>
이렇게하면 원하는 출력을 얻을 수 있습니다.
아마도 APPCOMPAT-V7 (21)과 함께이 게시물의 투명한 실행 바를 살펴 봐야 할을 구석으로입니다.
게시물이 제안하는 포인트는
- RelativeLayout을 사용하여 툴바와 본문을 배치했는지 확인하십시오.
- 마지막에 축제를하십시오.
- 도구의 android : 배경 속성에 투명색을 넣습니다.
이것은 너무 많은 번거 로움없이 문제를 해결하는 것입니다.
도구를 투명하게 만드는 가장 간단한 방법은 @colors 섹션에 불투명도를 정의하고 @styles 섹션에 TransparentTheme를 정의한 다음 단지 정의를 사용에 넣는 것입니다.
@ colors.xml
<color name="actionbar_opacity">#33000000</color>
@ styles.xml
<style name="TransparentToolbar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:windowActionBarOverlay">true</item>
<item name="windowActionBarOverlay">true</item>
</style>
@ activity_main.xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:background="@color/actionbar_opacity"
app:theme="@style/TransparentToolbar"
android:layout_height="?attr/actionBarSize"/>
그 결과 :
두 개의 Theme.AppCompat.Light.NoActionBar
테마 를 만들고 colorPrimary
속성을 투명 색상으로 설정 하여 반투명 도구를 구현했습니다 .
1) 불투명 한 도구를위한 하나의 테마를 만드십시오 :
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Toolbar background color -->
<item name="colorPrimary">#ff212cff</item>
</style>
투명 / 도구의 두 번째 테마 :
<style name="AppTheme.Overlay" parent="AppTheme">
<item name="colorPrimary">@color/transparent</item>
</style>
2) 활동 레이아웃에서 사용할 콘텐츠를 배치하여 콘텐츠 앞에 표시 할 수 있습니다.
<RelativeLayout
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:orientation="vertical">
<fragment
android:id="@+id/container"
android:name="com.test.CustomFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
</RelativeLayout>
3) AndroidManifest.xml의 활동에 투명 테마 적용
<activity
android:name="com.test.TransparentActivity"
android:parentActivityName="com.test.HomeActivity"
android:theme="@style/AppTheme.Overlay" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.test.HomeActivity" />
</activity>
나는 파티에 늦었다는 것을 안다. Toolbar
투명성 을 관리하기 위해 간단한 클래스를 만들었습니다 .
import android.annotation.SuppressLint;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.widget.Toolbar;
public class TransparentToolbarManager {
private Toolbar mToolbar;
private ColorDrawable colorDrawable;
public static final int MAX_ALPHA = 255, MIN_ALPHA = 0;
public TransparentToolbarManager(Toolbar mToolbar) {
this.mToolbar = mToolbar;
this.colorDrawable = new ColorDrawable(mToolbar.getContext().getResources().getColor(R.color.colorPrimary));
}
public TransparentToolbarManager(Toolbar mToolbar, ColorDrawable colorDrawable) {
this.mToolbar = mToolbar;
this.colorDrawable = colorDrawable;
}
//Fading toolbar
public void manageFadingToolbar(int scrollDistance) {
if (mToolbar != null && colorDrawable != null) {
//FadeinAndOut according to the horizontal scrollValue
if (scrollDistance <= MAX_ALPHA && scrollDistance >= MIN_ALPHA) {
setToolbarAlpha(scrollDistance);
} else if (scrollDistance > MAX_ALPHA) {
setToolbarAlpha(MAX_ALPHA);
}
}
}
@SuppressLint("NewApi")
public void setToolbarAlpha(int i) {
colorDrawable.setAlpha(i);
if (CommonHelper.isSupport(16)) {
mToolbar.setBackground(colorDrawable);
} else {
mToolbar.setBackgroundDrawable(colorDrawable);
}
}
}
및 CommonHelper.isSupport ()
public static boolean isSupport(int apiLevel) {
return Build.VERSION.SDK_INT >= apiLevel;
}
AppBarLayout 태그에 android : background = "# 10000000"만 추가하면됩니다.
https://stackoverflow.com/a/37672153/2914140 이 저를도 상징합니다.
활동에 대해이 레이아웃을 만들었습니다.
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent" <- Add transparent color in AppBarLayout.
android:theme="@style/AppTheme.AppBarOverlay"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:theme="@style/ToolbarTheme"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:theme="@style/ToolbarTheme"
/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
<- Remove app:layout_behavior=...
/>
</android.support.design.widget.CoordinatorLayout>
이것이 작동하지 않는 onCreate()
활동 에서 다음 과 같이 작성하십시오 (도구 모음은 @ + id / toolbar 임).
toolbar.background.alpha = 0
반투명 색상 (예 : # 30ff00ff)을 설정 비용 toolbar.setBackgroundColor(color)
. 또는 배경색을 AppBarLayout
.
제 경우에는 스타일 AppBarLayout
과 Toolbar
역할을하지 않습니다.
아래 코드를 시도하십시오
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.Transparent"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
style.xml
<style name="AppTheme.Transparent" parent="ThemeOverlay.AppCompat.Light">
<item name="colorPrimary">@android:color/transparent</item>
<item name="colorControlActivated">@color/colorWhite</item>
<item name="colorControlNormal">@color/colorWhite</item>
</style>
에 대한 지원 도구 모음 V7 android.support.v7.widget.Toolbar
:
암호
toolbar.setBackground(null);
// or
toolbar.setBackgroundColor(ContextCompat.getColor(getContext(), android.R.color.transparent));
xml ( android:background="@null"
또는 android:background="@android:color/transparent"
)
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@null"
android:minHeight="?attr/actionBarSize"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:ellipsize="start"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"/>
</android.support.v7.widget.Toolbar>
제목이 보여줍니다. textColor
이것은 나를 위해 일했습니다 (AndroidX 지원 라이브러리).
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:theme="@style/AppTheme.AppBarOverlay"
android:translationZ="0.1dp"
app:elevation="0dp">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@null"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</com.google.android.material.appbar.AppBarLayout>
이 코드는 필요한 모든 뷰에서 배경을 제거하고 AppBarLayout에서 그림자도 제거합니다.
답변은 여기에서 찾았습니다 : https://code-examples.net/en/q/1ea52cc
styles.xml
파일에 아래 코드 추가
<style name="LayoutPageTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/TransparentActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="TransparentActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@android:color/transparent</item>
</style>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/transparent"
app:popupTheme="@style/AppTheme.PopupOverlay" />
작성하는 것을 잊지 마세요 : android:background="@android:color/transparent"
res
패키지로 이동하여 color.xml
. 기본 색상을로 설정합니다 #00000000
.
참고 URL : https://stackoverflow.com/questions/26505632/how-to-make-toolbar-transparent
'ProgramingTip' 카테고리의 다른 글
어떤 것이 더 빠르고 더 낫입니까? (0) | 2020.11.16 |
---|---|
Parcelable의 하위 클래스를 다른 Parcel에 작성 (0) | 2020.11.16 |
mysql에서 SET autocommit = 1과 START TRANSACTION의 차이점 (내가 놓친 위치?) (0) | 2020.11.15 |
모바일 장치의 Twitter 부트 신뢰할 수있는 모달 (0) | 2020.11.15 |
Swagger API 선언에서 JSON-Schema를 생성하는 방법 (0) | 2020.11.15 |