티스토리 뷰

카테고리 없음

Drawer

장꾸꾸 2020. 10. 7. 15:19

고양이를 클릭하면 왼쪽에서 drawer가 열린다

MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button btEdit;
    Button btStudy;
    Button btQuit;
    TextView welcome;

    //TODO drawer넣기
    DrawerLayout drawer;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btEdit = findViewById(R.id.bt_edit);
        btStudy = findViewById(R.id.bt_study);
        btQuit = findViewById(R.id.bt_quit);
        welcome = findViewById(R.id.welcome_tv);

        drawer = findViewById(R.id.drawer);
        drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

        boolean isOpen = drawer.isDrawerOpen(GravityCompat.START);

        findViewById(R.id.img_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawer.openDrawer(GravityCompat.START);
            }
        });

xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

// 처음 켰을 때 나오는 부분
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimaryDark">

        <ImageButton
            android:id="@+id/img_btn"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_centerInParent="true"
            android:src="@drawable/cat" />

        <TextView
            android:id="@+id/welcome_tv"
            android:layout_width="wrap_content"
            android:layout_height="70dp"
            android:textColor="@color/colorAccent"
            android:text="WELCOME TO 단어장"
            android:textStyle="italic"
            android:textSize="43sp"
            android:layout_centerHorizontal="true"
            android:layout_above="@id/img_btn"/>

    </RelativeLayout>

// 아래 리니어가 왼쪽에서 나타나는 drawer
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/colorAccent"
        android:orientation="vertical">

        <Button
            android:id="@+id/bt_edit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="150dp"
            android:text="단어장 편집"
            android:textSize="23sp" />

        <Button
            android:id="@+id/bt_study"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/bt_edit"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp"
            android:text="단어장 풀기"
            android:textSize="23sp" />

        <Button
            android:id="@+id/bt_quit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/bt_study"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp"
            android:text="끝내기"
            android:textSize="23sp" />

    </LinearLayout>

</androidx.drawerlayout.widget.DrawerLayout>

 


 

package com.example.drawlayout;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    DrawerLayout drawer;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawer = findViewById(R.id.drawer);
        drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

        boolean isOpen =drawer.isDrawerOpen(GravityCompat.START);

        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                drawer.openDrawer(GravityCompat.START);
            }
        });
    }
}

start는 왼쪽에서 서랍이 열리고

end는 오른쪽에서 서랍이 열린다.

 

end와 start는 자바와 xml 모두에서 설정해줘야 함.

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#456785">


        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ff0000"
        android:orientation="vertical">

        <Button
            android:id="@+id/two_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

</androidx.drawerlayout.widget.DrawerLayout>
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함