Android, Java에서 확인란이 있는 옵션 메뉴를 만드는 방법
Android 메뉴는 모든 최신 Android 애플리케이션의 가장 중요한 구성 요소 중 하나이며 개발자가 설정, 검색, 앱 정보 등과 같은 특정 기능을 표시할 수 있는 수단을 제공합니다.
Option 메뉴는 Android에서 사용할 수 있는 메뉴 유형 중 하나입니다. 일부 안드로이드 애플리케이션의 툴바에 위치합니다. 옵션 메뉴는 더 복잡할 수 있으며 특정 기능을 수행하려면 추가 구성 요소가 필요할 수 있습니다. 라디오 버튼, 체크박스 등과 같은 구성 요소는 메뉴 레이아웃과 함께 사용할 수 있습니다. 그러나이 튜토리얼에서는 여러 확인란이 있는 Dark Option 메뉴를 만들 것입니다.
이 튜토리얼은 쉬운 이해와 안내를 위해 5단계로 나누어져 있습니다.
Step 1: Create a new project, File/New project/input the name of the app as MenuCheckBoxTutorial.
Step 2: Navigate to the res/layout/activity_main.xml, add the following code:
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#FF000000">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:padding="5dp"
android:background="#FF000000">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/PopUpDarkMenu"/>
</android.support.design.widget.AppBarLayout>
</LinearLayout>
2단계에서는 선형 레이아웃 및 도구 모음에 대한 단순한 어두운 레이아웃을 만들고 있습니다. 메뉴에 스타일을 추가하는 데 사용될 속성
app:popupTheme="@style/PopUpDarkMenu"
을 기록해 두십시오.Step 3: Create a menu file res/menu/menu_item.xml.
menu_item.xml 파일에서 메뉴 레이아웃의 내용을 정의할 것입니다. 튜토리얼 결과를 자세히 보면 첫 번째 메뉴 항목에 하위 메뉴가 있고 항목 아래에 하위 메뉴를 만들려면 첫 번째 메뉴 항목 아래에 새 메뉴를 만듭니다. 확인란의 경우 메뉴 항목에 확인란 아이콘을 표시하는 데 사용할
android: clickable= "true";
를 사용합니다.<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/click_action"
android:title="Click Action">
<menu>
<item
android:id="@+id/item"
android:title="Item"/>
</menu>
</item>
<item
android:id="@+id/hide_tracks"
android:title="Hide Short Tracks"
android:checkable="true"/>
<item
android:id="@+id/show_tracks"
android:title="Show Track Duration"
android:checkable="true"/>
<item
android:id="@+id/show_overflow"
android:title="Show Overflow"
android:checkable="true"/>
<item
android:id="@+id/round_corners"
android:title="Round Corners"
android:checkable="true"/>
<item
android:id="@+id/fast_scrollers"
android:title="Fast Scroller"
android:checkable="true"/>
<item
android:id="@+id/multi_select"
android:title="Multi select"
/>
</menu>
Step 4: Navigate to the res/values/style.xml file.
style.xml 파일에서 메뉴의 모양을 정의합니다. "PopUpDarkMenu"라는 이름으로 새 스타일을 만들고 아래 코드를 추가합니다.
<resources>
<style name="PopUpDarkMenu" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="android:textColor">#ffffff</item>
<item name="android:colorBackground">#444444</item>
<item name="colorControlNormal">#ffffff</item> <!-- normal border color change as you wish -->
<item name="colorControlActivated">#ffffff</item> <!-- activated color change as you wish -->
</style>
</resources>
android:textColor
는 메뉴 레이아웃 텍스트의 색상을 설정하는 데 사용됩니다.colorControlNormal
는 확인란의 테두리 색상을 설정하는 데 사용됩니다.colorControlActivated
는 선택된 확인란의 색상을 설정하는 데 사용됩니다.Step 5 : Navigate to the MainActivity.class. Add the following codes.
package com.mycompany.checkbox;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
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);
Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu (Menu menu)
{
getMenuInflater().inflate(R.menu.list_item, menu);
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem item)
{
switch (item.getItemId())
{
case R.id.hide_tracks:
if (item.isChecked())
{
item.setChecked(false);
}
else
{
item.setChecked(true);
Toast.makeText(getApplication(), "Track Hidden", Toast.LENGTH_SHORT).show();
}
break;
case R.id.show_tracks:
if (!item.isChecked())
{
item.setChecked(true);
Toast.makeText(getApplication(), "Track Shown", Toast.LENGTH_SHORT).show();
}
else
{
item.setChecked(false);
}
break;
case R.id.show_overflow:
if (!item.isChecked())
{
item.setChecked(true);
Toast.makeText(getApplication(), "Overflown", Toast.LENGTH_SHORT).show();
}
else
{
item.setChecked(false);
}
break;
case R.id.round_corners:
if (!item.isChecked())
{
item.setChecked(true);
Toast.makeText(getApplication(), "Round Corners", Toast.LENGTH_SHORT).show();
}
else
{
item.setChecked(false);
}
break;
case R.id.fast_scrollers:
if (!item.isChecked())
{
item.setChecked(true);
Toast.makeText(getApplication(), "Fast Scrollers enabled", Toast.LENGTH_SHORT).show();
}
else
{
item.setChecked(false);
}
break;
}
return true;
}
}
위의 코드 스니펫에는 oncreate 메소드 외에도
onCreateOptionMenu(Menu menu)
및 onOptionItemSelected(Menu item)
라는 두 가지 다른 메소드가 있습니다.onCreateOnptionMenu (Menu menu)
이 함수는 메뉴라는 하나의 인수를 허용합니다. 그러나 메뉴를 생성하려면 activity_main.xml로 확장해야 합니다. 이는 getMenuInflater().inflate()
를 사용하여 수행할 수 있습니다.inflate 메서드는 menu_item.xml 레이아웃을 메뉴 개체에 전달하는 데 사용됩니다.
The onCreateOptionMenu (Menu item)
는 부울 값을 반환하지만 이 자습서에서는 반환 값이 true입니다.두 번째 방법은
onOptionItemSelected (Menu item)
onCreateOnptionMenu (Menu menu)
는 메뉴를 만드는 데 사용되지만 onOptionItemSelected (Menu item)
는 메뉴의 각 메뉴 항목에 대한 onclick 이벤트를 처리하는 데 사용됩니다. 메뉴 목록의 특정 항목을 나타내는 하나의 인수를 허용합니다.item.getItemById()
는 전달된 id와 일치하는 항목 id를 찾는 데 사용되며 switch 문을 사용하여 여러 id를 처리합니다.item.setChecked(boolean b)
는 항목 확인란의 선택 여부를 확인하는 데 사용됩니다.결론
메뉴 작동 방식을 이해하는 것은 개발자에게 도움이 될 것입니다. 이 튜토리얼에서는 Android 애플리케이션의 메뉴에 체크박스를 구현하는 방법에 대해 코드 스니펫으로 자세히 설명했습니다.
Reference
이 문제에 관하여(Android, Java에서 확인란이 있는 옵션 메뉴를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/devaspires/how-to-create-an-option-menu-with-checkbox-in-android-java-26ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)