힝구힝구
233
2019-05-30 10:41:38
2
856

[안드로이드] 레이아웃 질문좀요..


안녕하세요

다음지도처럼 다음과 같은 화면을 만들려고 합니다


위 화면과 같이 위에 메뉴, 중앙에 프래그먼트(맵), 메뉴를 누르거나 왼쪽에서 스와이프하면 네비게이션 드로어가 나오게끔 배치하고싶은데, 자꾸 프래그먼트가 네비게이션 드로어 위에 배치되거나, 코드 순서를 바꿔보면 또 프래그먼트가 밑에 배치되거나 그런식입니다.

다음은 activity_main.xml입니다



<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.ev_map.MainActivity"
    tools:showIn="@layout/activity_main">

    <android.support.v4.widget.DrawerLayout
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:id="@+id/drawer">

        <TextView   
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textSize="48sp"
            android:background="#FFFFFF"
            android:textColor="#000000"
            android:id="@+id/drawer_content"/>

        <ListView
            android:layout_width="200dp"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:background="#FFC107"
            android:id="@+id/drawer_menulist" />

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >

        <fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.MapFragment" />

    </LinearLayout>

</android.support.constraint.ConstraintLayout>


코드 종류에 xml이 없어서 html로 했습니다.

이렇게 배치해놓으면 결과가 다음과 같습니다.



이렇게 프래그먼트가 덮어버립니다.

배치를 어떻게 해야될까요.. 조언좀 부탁드립니다 ㅠㅠ

0
  • 답변 2

  • NPC
    571
    2019-05-30 11:46:02
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.MapFragment" />

    </LinearLayout>

    <android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@color/main_content_background"
    android:fitsSystemWindows="true" />

    </android.support.v4.widget.DrawerLayout>
    대충 이런식으로 하고싶은거 아닌가요?
  • 힝구힝구
    233
    2019-06-02 23:09:33 작성 2019-06-02 23:14:16 수정됨

    답변 감사합니다!!

    바빠서 지금확인했네요 ㅠ

    레이아웃을 이런식으로 짜는거군요 감사합니다

    이거 그 프로젝트 생성할때 기본으로 제공되는 네비게이션 액티비티 그건가요?

    MainActivity.java에서 어떤식으로 생성해주고 관리해줘야되는지 여쭤봐도될까요..

    지금 기존에 있던 코드가 xml파일은 본문과 같고 자바 파일은


    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, items) ;
    
            ListView listview = findViewById(R.id.drawer_menulist);
            listview.setAdapter(adapter) ;
    
    //코드 계속
    
    listview.setOnItemClickListener(new ListView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView parent, View v, int position, long id) {
    
                    TextView contentTextview = findViewById(R.id.drawer_content) ;
    
                    switch (position) {
                        case 0 : // WHITE
                            contentTextview.setBackgroundColor(Color.rgb(0xFF, 0xFF, 0xFF)) ;
                            contentTextview.setTextColor(Color.rgb(0x00, 0x00, 0x00)) ;
                            contentTextview.setText("검색") ;
                            break ;
                        case 1 : // RED
                            contentTextview.setBackgroundColor(Color.rgb(0xFF, 0x00, 0x00)) ;
                            contentTextview.setTextColor(Color.rgb(0xFF, 0xFF, 0xFF)) ;
                            contentTextview.setText("길찾기") ;
                            break ;
                        case 2 : // GREEN
                            contentTextview.setBackgroundColor(Color.rgb(0x00, 0xFF, 0x00)) ;
                            contentTextview.setTextColor(Color.rgb(0x00, 0x00, 0x00)) ;
                            contentTextview.setText("설정") ;
                            break ;
                        case 3 : // BLUE
                            contentTextview.setBackgroundColor(Color.rgb(0x00, 0x00, 0xFF)) ;
                            contentTextview.setTextColor(Color.rgb(0xFF, 0xFF, 0xFF)) ;
                            contentTextview.setText("BLUE") ;
                            break ;
                        case 4 : // BLACK
                            contentTextview.setBackgroundColor(Color.rgb(0x00, 0x00, 0x00)) ;
                            contentTextview.setTextColor(Color.rgb(0xFF, 0xFF, 0xFF)) ;
                            contentTextview.setText("BLACK") ;
                            break ;
                    }
                    // 코드 계속 ...
                }
            });
    
            listview.setOnItemClickListener(new ListView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView parent, View v, int position, long id) {
    
                    // ... 코드 계속
    
                    // close drawer.
                    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer) ;
                    drawer.closeDrawer(Gravity.LEFT) ;
                }
            });
        }
    
    네비게이션 관련 코드는 이렇게 짜놓았는데 말씀해주신거랑 병합을 어케해야될지 모르겠습니다 ㅠ


  • 로그인을 하시면 답변을 등록할 수 있습니다.