상세 컨텐츠

본문 제목

[안드로이드] Material App Bars Top 쉽게 만드는 방법

안드로이드

by aries574 2021. 12. 19. 14:18

본문


이번 시간에는 Material app bars top에 대해서 알아보겠습니다.

1. 라이브러리 등록

build.gradle(Module:프로젝트명:app)

dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.

implementation 'com.google.android.material:material:1.4.0'

 

2. 테마 수정 themes.xml

( res -> value -> themes)

style 태그 속성 parent를 아래 코드로 변경해주시면 됩니다.

app bar를 만들어야 하기 때문에 noActionBar를 통해 액션바를 없애줘야 합니다.

 <style name="Theme.MaterialExam" parent="Theme.MaterialComponents.Light.NoActionBar">

2020.12.19 - [안드로이드] - [안드로이드]라이브러리 찾아 등록하는 방법

 

[안드로이드]라이브러리 찾아 등록하는 방법

2020/12/18 - [안드로이드] - [안드로이드]TextSwitcher 글자변환 애니메이션 만들어보기 이번 시간에는 안드로이드 개발을 하면서 원하는 기능을 쓰기 위해 라이브러리를 찾아서 등록하는 방법을 알아

aries574.tistory.com

 

3. 메뉴 만들기 main_menu.xml

app -> New -> Android Resource File

 

File name : main_menu

Resource type: Menu로 하시면 됩니다. 

 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/app_bar_search"
        android:icon="@drawable/ic_search"
        android:title="Search"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always" />

    <item android:id="@+id/menu1"
        android:title="menu1" />

    <item android:id="@+id/menu2"
        android:title="menu2" />
</menu>

 

아이콘 res -> drawable

ic_search.xml
0.00MB

 

 

 

4. 메인화면 구성 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
    tools:context=".MainActivity">

    <!-- layout_behavior: RecyclerView와 자연스럽게 연결-->
    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="512dp"
            android:paddingBottom="512dp" />

    </androidx.core.widget.NestedScrollView>

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:liftOnScroll="true">

        <!-- 스크롤에 따라 Toolbar를 확장하거나 축소할 수 있게 함-->
        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:contentScrim="@color/purple_200"
            app:expandedTitleGravity="bottom"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:scrimAnimationDuration="300">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="350dp"
                android:scaleType="centerCrop"
                android:src="@drawable/cat"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7" />

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/main_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize" />
        </com.google.android.material.appbar.CollapsingToolbarLayout>

    </com.google.android.material.appbar.AppBarLayout>


</androidx.coordinatorlayout.widget.CoordinatorLayout>


색상 res -> values -> colors.xml

<color name="purple_200">#FFBB86FC</color>

이미지 res -> drawable 

 

5. 메인코드 기능구현 MainActivity.java

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;


public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toolbar = findViewById(R.id.main_toolbar);

        //툴바 적용
        setSupportActionBar(toolbar);

        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {

                switch(item.getItemId()){
                    case R.id.menu1:
                        Toast.makeText(getApplicationContext(), "menu1" , Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.menu2:
                        Toast.makeText(getApplicationContext(), "menu2" , Toast.LENGTH_SHORT).show();
                        return true;
                }

                return true;
            }
        });
    }

    
    //메뉴 추가
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }
}

 

6. 실행화면

 

2021.12.18 - [안드로이드] - [안드로이드] Material app bars bottom 쉽게 만드는 방법

 

[안드로이드] Material app bars bottom 쉽게 만드는 방법

이번 시간에는 Material app bars bottom에 대해서 알아보겠습니다. 1. 라이브러리 등록 build.gradle(Module:프로젝트명:app) dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다. implementation 'com.googl..

aries574.tistory.com

2021.12.16 - [안드로이드] - [안드로이드] Material tabs [Fixed tabs, Scrollable tabs] 쉽게 만드는 방법

 

[안드로이드] Material tabs [Fixed tabs, Scrollable tabs] 쉽게 만드는 방법

이번 시간에는 Material Tabs에 대해서 알아보겠습니다. Material Tabs에는 고정형(Fixed)과 스크롤형(Scrollable ) 두 가지가 있습니다. 고정형은 말 그대로 탭이 고정된 상태이며, 스크롤은 스크롤이 가능

aries574.tistory.com

2021.12.17 - [안드로이드] - [안드로이드] Material Tabs Custom 하는 방법

 

[안드로이드] Material Tabs Custom 하는 방법

2021.12.16 - [안드로이드] - [안드로이드] Material tabs [Fixed tabs, Scrollable tabs] 쉽게 만드는 방법 [안드로이드] Material tabs [Fixed tabs, Scrollable tabs] 쉽게 만드는 방법 이번 시간에는 Material..

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역