마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

네비게이션 드로우 오른쪽 부분이 나오게 하고 싶은데 방법을 모르겠어요.

0 추천

 

안녕하세요.

네비게이션 드로우를 사용해서, 오른쪽 부분에서 메뉴가 나오도록 하고 싶은데 그 방법을 잘 모르겠습니다.

현재 프로그램을 시작하면, 아래와 같은 에러가 뜹니다.

xml부분에서, 리스트뷰의 layout_gravity를 left로 주면, 네비게이션 드로우가 잘나오는것을 보실수 있으실겁니다.

이부분을 오른쪽에서 나오게 하고 싶어서, Right로 주는 순간 아래와 같은 에러들이 뜨는데..

그 이유를 잘 모르겠습니다. 어떻게해야 오른쪽으로 눌러도 잘 나올까요 ㅠ ㅠ

8000자가 넘어서, 넘는 부분은 아래의 댓글에 이어서 달아보았습니다.

 

그리고 문제가 있다고 나타내는 줄은 바로 다음의 코드부분입니다.

특히 if(drawerToggle.onOptionsItemSelected(item)) 이부분 입니다.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(drawerToggle.onOptionsItemSelected(item))
        return true;
    return super.onOptionsItemSelected(item);
}

 

 java.lang.IllegalArgumentException: No drawer view found with gravity LEFT
                      at android.support.v4.widget.DrawerLayout.openDrawer(DrawerLayout.java:1651)
                      at android.support.v4.widget.DrawerLayout.openDrawer(DrawerLayout.java:1637)
                      at android.support.v7.app.ActionBarDrawerToggle.toggle(ActionBarDrawerToggle.java:289)
                      at android.support.v7.app.ActionBarDrawerToggle.onOptionsItemSelected(ActionBarDrawerToggle.java:277)
                      at com.example.milking.rrrrr.MainActivity.onOptionsItemSelected(MainActivity.java:59)
                      at android.app.Activity.onMenuItemSelected(Activity.java:3000)

 

 

<자바파일>
 

package com.example.abcd.rrrrr;

import android.content.res.Configuration;
import android.net.Uri;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

    ActionBarDrawerToggle drawerToggle;
    String [] drawer_str={"mypage","setup","help","뚜악","뚜아락"};

    

 

Kind카인드 (3,600 포인트) 님이 2016년 11월 7일 질문
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        DrawerLayout drawerLayout=(DrawerLayout)findViewById(R.id.drawerlayout);

        ListView listView=(ListView)findViewById(R.id.drawer);

        ArrayAdapter<String> adapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,drawer_str);

        listView.setAdapter(adapter);

        drawerToggle=new ActionBarDrawerToggle(this,drawerLayout,R.string.open,R.string.close){
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
            }
            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
            }
        };
        drawerLayout.setDrawerListener(drawerToggle);
    }
    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        drawerToggle.syncState();
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(drawerToggle.onOptionsItemSelected(item))
            return true;
        return super.onOptionsItemSelected(item);
    }
}



<xml파일>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawerlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.abcd.rrrrr.MainActivity">


    <ListView
    android:layout_width="100dp"
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:orientation="vertical"
    android:divider="#23222A"
    android:dividerHeight="1dp"
    android:background="#FFE868"
    android:id="@+id/drawer"/>


</android.support.v4.widget.DrawerLayout>

1개의 답변

0 추천
  1. 새 프로젝트를 생성하는데 Navigation Drawer Activity 를 생성 한뒤
  2. activity_main.xml 에 NavigationView 를 선택 하고 layout_gravity 값을 start 에서 end 로 변경한 다음  
  3. 구동 합니다. 
머가 빠졌는지 넣고싶은 프로젝트랑 비교 합니다. 
aucd29 (218,390 포인트) 님이 2016년 11월 8일 답변
원래 제가 처음에 Empty로 프로젝트를 생성하고, 화면구성이
탭레이아웃을 통해서, 5가지 탭으로 구성이 되어 있습니다.
그리고 마지막 5번쨰의 탭을 눌렀을 경우에만, 네비게이션 드로우가 화면에 펼쳐지도록 하고싶은데, 말씀하신대로 하면, 처음부터 애초에 다시 네비게이션뷰로 만들어야 하나요..?

탭의 한 부분만, 네비게이션으로 처리를 하고 싶습니다.
navigation drawer 에 예제를 파악해야 하므로 프로젝트를 만들어 보라고 한 것 이구요

5번째만 navigation drawer 가 적용되어야 한다면 이러한 UX 는 아직 본적이 없어서
이야기 드릴 수 있는게 없네요
알겠ㅅ브니다. 답변 정말 감사드립니다.
...