프로그래밍

안드로이드 스튜디오 메뉴 설정

안드로이드 스튜디오
반응형

OptionMenu

리소스에서 새 디렉토리 생성
생성한 디렉토리에서 xml파일 생성

<?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/apple"
        android:icon="@drawable/ic_launcher_background"
        android:title="사과" />
    <item
        android:id="@+id/banana"
        android:icon="@drawable/ic_launcher_background"
        android:title="바나나" />
    <item
        android:id="@+id/grape"
        android:icon="@drawable/ic_launcher_background"
        android:title="포도" />

</menu>

-> 생성한 xml파일에서 메뉴 아이템 구성

package com.example.menu;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.mymenu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected (MenuItem item){
        switch (item.getItemId())
        {
            case R.id.apple:
                Toast.makeText(getApplicationContext(),"사과",Toast.LENGTH_SHORT).show();
                return  true;
            case R.id.banana:
                Toast.makeText(getApplicationContext(),"바나나",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.grape:
                Toast.makeText(getApplicationContext(),"포도",Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

-> 메인엑티비티

 

ActionBar

리소스에서 새 디렉토리 생성
생성한 디렉토리에서 xml파일 생성

<?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/refresh"
        android:icon="@drawable/ic_action_refresh"
        app:showAsAction="always"
        android:title="refresh"/>

    <item
        android:id="@+id/search"
        android:icon="@drawable/ic_action_search"
        app:showAsAction="ifRoom"
        android:title="search"/>

    <item
        android:id="@+id/setting"
        android:orderInCategory="100"
        app:showAsAction="never"
        android:title="setting"/>

    /*
    app:showAsAction="always" : 항상 보이게 표시
    app:showAsAction="never" : 항상 overflow 에 표시
    app:showAsAction="ifRoom" : 액션바에 공간이 있을경우 표시
    app:showAsAction="withText" : 액션바에 아이콘과 텍스트 함께 표시
    */
</menu>
package com.example.actionbar;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //메뉴 리소스 팽창, 액션바에 항목 추가
        getMenuInflater().inflate(R.menu.action_bar, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //항목들이 눌러지면 액션 시작
        switch (item.getItemId())
        {
            case R.id.refresh:
                Toast.makeText(this,"refresh",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.search:
                Toast.makeText(this,"search",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.setting:
                Toast.makeText(this,"setting",Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

 

 

리소스에서 새 디렉토리 생성
생성한 디렉토리에서 xml파일 생성

<?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:title="search"
        android:id="@+id/search"
        android:icon="@android:drawable/ic_menu_search"
        />

    <item android:title="add"
        android:id="@+id/add"
        android:icon="@android:drawable/ic_menu_add"/>

    <item android:title="edit"
        android:id="@+id/edit"
        android:icon="@android:drawable/ic_menu_edit"/>
</menu>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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" >

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="Show Popup Menu" />
</LinearLayout>
package com.example.popup;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

    public void click(View view) {
        PopupMenu popup = new PopupMenu(this, view);
        popup.getMenuInflater().inflate(R.menu.popup,popup.getMenu());

        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(getApplicationContext(),"클릭된 팝업 메뉴: "+item.getTitle(),Toast.LENGTH_SHORT).show();
                return true;
            }
        });
        popup.show();
    }
}

 

 

반응형