Android 활성 바 ActionBar 의 상세 한 설명 및 인 스 턴 스 코드
그림 1
그림 2
그림 3
그림 4
그림 5
Action Bar 가 제공 하 는 기능 총화
그림 1.ActionBar 를 사용 하여 옵션 메뉴 항목 을 표시 합 니 다.
menu_mainxml 코드
프로그램 아이콘 탐색 사용 하기
Action View 를 추가 하 는 방법
그림 2 Activity 코드 구역
Mainxml 코드MainActivity 코드
그림 5 Action Bar 를 사용 하여 드 롭 다운 내 비게 이 션 을 실현 한다.
Action Bar 는 Android 3.0 의 중요 한 업데이트 중 하나 입 니 다.그래서 현재 대상 버 전이 11 보다 높 으 면 기본적으로 Action Bar 가 시 작 됩 니 다.
Action Bar 가 제공 하 는 기능 요약:
옵션 메뉴 의 메뉴 항목 을 표시 합 니 다
Action Bar 를 숨 깁 니 다.사용 한 친구 들 은 모두 알 고 있 을 것 입 니 다.AndroidManifest.xml 에서 NoAction Bar 를 직접 정의 하면 Action Bar 를 닫 을 수 있 습 니 다.그러나 이런 방법 으로 Action Bar 를 닫 으 면 나중에 Action Bar 를 사용 할 수 없습니다.그래서 보통 저 희 는 두 번 째 코드 로 숨 기 는 방식 으로 Action Bar 에 대한 작업 을 합 니 다.
1.getActionBar();
2.show():ActionBar 표시
3.hide():ActionBar 숨 기기
그림 1.ActionBar 를 사용 하여 옵션 메뉴 항목 을 표시 합 니 다.
menu_main.xml 코드:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="@string/font_size"
android:showAsAction="always|withText"
android:icon="@drawable/font">
<menu>
<!-- -->
<group android:checkableBehavior="single">
<!-- -->
<item
android:id="@+id/font_10"
android:title="@string/font_10"/>
<item
android:id="@+id/font_12"
android:title="@string/font_12"/>
<item
android:id="@+id/font_14"
android:title="@string/font_14"/>
<item
android:id="@+id/font_16"
android:title="@string/font_16"/>
<item
android:id="@+id/font_18"
android:title="@string/font_18"/>
</group>
</menu>
</item>
<!-- -->
<item android:id="@+id/plain_item"
android:showAsAction="always|withText"
android:title="@string/plain_item">
</item>
<item android:title="@string/font_color"
android:showAsAction="always"
android:icon="@drawable/color">
<menu>
<!-- -->
<group>
<!-- -->
<item
android:id="@+id/red_font"
android:title="@string/red_title"/>
<item
android:id="@+id/green_font"
android:title="@string/green_title"/>
<item
android:id="@+id/blue_font"
android:title="@string/blue_title"/>
</group>
</menu>
</item>
</menu>
프로그램 아이콘 탐색 사용 하기
//
actionBar.setDisplayShowHomeEnabled(true);
//
actionBar.setHomeButtonEnabled(true);
// ,
actionBar.setDisplayHomeAsUpEnabled(true);
// int ActionBar , customView
actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM);
Action View 를 추가 하 는 방법Action Bar 에 서 는 일반적인 Action Item 외 에 도 일반적인 UI 구성 요 소 를 표시 할 수 있 습 니 다.다음 과 같은 두 가지 방법 이 있 습 니 다.
1.Action Item 을 정의 할 때 android:actionViewClass 속성 을 사용 하여 Aciton View 의 실현 클래스 를 지정 합 니 다.
2.Action Item 을 정의 할 때 android:actionLayout 속성 을 사용 하여 Action View 에 대응 하 는 보 기 를 지정 합 니 다.
그림 2 Activity 코드 영역:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
menu_main.xml 코드:
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/search"
android:orderInCategory="100"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView"/>
<item
android:id="@+id/progress"
android:orderInCategory="100"
android:showAsAction="always"
android:actionLayout="@layout/clock"
/>
</menu>
clock.xml
<?xml version="1.0" encoding="utf-8" ?>
<AnalogClock
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
그림 3 ActionBar 를 사용 하여 Tab 내 비게 이 션 을 실현 한다.ActionBar 를 만 들 고 Tab 내 비게 이 션 을 실현 합 니 다.
1.ActionBar 의 setNavigation 모드(ActionBar.NAVIGATION 호출MODE_TABS)방법 Tab 내 비게 이 션 사용
2.ActionBar 의 add()방법 을 호출 하여 Tab 탭 을 여러 개 추가 하고 Tab 탭 마다 이벤트 모니터 를 추가 합 니 다.
MainActivity 코드:
public class MainActivity extends Activity implements
ActionBar.TabListener
{
private static final String SELECTED_ITEM = "selected_item";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ActionBar actionBar = getActionBar();
// ActionBar :Tab
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Tab , Tab
actionBar.addTab(actionBar.newTab().setText(" ")
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(" ")
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(" ")
.setTabListener(this));
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
if (savedInstanceState.containsKey(SELECTED_ITEM))
{
// Fragment
getActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(SELECTED_ITEM));
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
// Fragment Bundle
outState.putInt(SELECTED_ITEM,
getActionBar().getSelectedNavigationIndex());
}
@Override
public void onTabUnselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction)
{
}
// Tab
@Override
public void onTabSelected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction)
{
// Fragment
Fragment fragment = new DummyFragment();
// Bundle , Fragment
Bundle args = new Bundle();
args.putInt(DummyFragment.ARG_SECTION_NUMBER,
tab.getPosition() + 1);
// fragment
fragment.setArguments(args);
// FragmentTransaction
FragmentTransaction ft = getFragmentManager()
.beginTransaction();
// fragment Activity container
ft.replace(R.id.container, fragment);
//
ft.commit();
}
@Override
public void onTabReselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction)
{
}
}
DummyFragment.java 코드:간단 한 Fragment,TextView 구성 요소 만 표시
public class DummyFragment extends Fragment
{
public static final String ARG_SECTION_NUMBER = "section_number";
// Fragment View
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.CENTER_HORIZONTAL);
// Fragment Bundle
Bundle args = getArguments();
// TextView
textView.setText(args.getInt(ARG_SECTION_NUMBER) + "");
textView.setTextSize(30);
// TextView
return textView;
}
}
그림 4 Android 3.0 이전 Fragment 지원Android 3.0 이전의 Fragment 는 app.Fragment 에서 계승 하 는 것 이 아니 라 v4.app.Fragment 에서 계승 하 는 것 입 니 다.그 밖 에 v4.app.Fragment 는 다음 과 같은 조합 류 를 제공 합 니 다.
1.FragmentActivity
2.ViewPager
3.FragmentPagerAdapter
4.PagerTitleStrip
Main.xml 코드:
<?xml version="1.0" encoding="utf-8" ?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- -->
<android.support.v4.view.PagerTitleStrip
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#33b5e5"
android:textColor="#fff"
android:paddingTop="4dp"
android:paddingBottom="4dp" />
</android.support.v4.view.ViewPager>
MainActivity 코드:
public class MainActivity extends FragmentActivity
implements ActionBar.TabListener
{
ViewPager viewPager;
ActionBar actionBar;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ActionBar
actionBar = getActionBar();
// ViewPager
viewPager = (ViewPager) findViewById(R.id.pager);
// FragmentPagerAdapter , ViewPager Fragment
FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(
getSupportFragmentManager())
{
// position Fragment
@Override
public Fragment getItem(int position)
{
Fragment fragment = new DummyFragment();
Bundle args = new Bundle();
args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
fragment.setArguments(args);
return fragment;
}
// i Adapter Fragment
@Override
public int getCount()
{
return 3;
}
// Fragment
@Override
public CharSequence getPageTitle(int position)
{
switch (position)
{
case 0:
return " ";
case 1:
return " ";
case 2:
return " ";
}
return null;
}
};
// ActionBar Tab
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// pagerAdapter Fragment
// Fragment Tab
for (int i = 0; i < pagerAdapter.getCount(); i++)
{
actionBar.addTab(actionBar.newTab()
.setText(pagerAdapter.getPageTitle(i))
.setTabListener(this));
}
// ViewPager FragmentPagerAdapter
viewPager.setAdapter(pagerAdapter); // ①
// ViewPager
viewPager.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener()
{
// ViewPager Fragment
@Override
public void onPageSelected(int position)
{
actionBar.setSelectedNavigationItem(position);
}
});
}
@Override
public void onTabUnselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction)
{
}
// Tab
@Override
public void onTabSelected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction)
{
viewPager.setCurrentItem(tab.getPosition()); // ②
}
@Override
public void onTabReselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction)
{
}
}
그림 5 Action Bar 를 사용 하여 드 롭 다운 내 비게 이 션 을 실현 한다.Action Bar 를 만 들 고 드 롭 다운 내 비게 이 션 절 차 를 실현 합 니 다.
1:ActionBar 의 actionBar.setNavigation Mode(ActionBar.NAVIGATION 호출MODE_LIST)방법 드 롭 다운 목록 내 비게 이 션 설정
2:ActionBar 의 setListNavigationCallbacks(Spinner Adapter adapter,ActionBar.OnNavigationListener callback)방법 으로 여러 목록 항목 을 추가 하고 목록 항목 마다 감청 이 벤트 를 설정 합 니 다.
MainActivity 코드 영역:
public class MainActivity extends Activity implements
ActionBar.OnNavigationListener
{
private static final String SELECTED_ITEM = "selected_item";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ActionBar actionBar = getActionBar();
// ActionBar
actionBar.setDisplayShowTitleEnabled(true);
// , List
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
// actionBar ArrayAdapter
actionBar.setListNavigationCallbacks(
new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
android.R.id.text1, new String[]
{" "," "," " }), this);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
if (savedInstanceState.containsKey(SELECTED_ITEM))
{
// Fragment
getActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(SELECTED_ITEM));
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
// Fragment Bundle
outState.putInt(SELECTED_ITEM,
getActionBar().getSelectedNavigationIndex());
}
//
@Override
public boolean onNavigationItemSelected(int position, long id)
{
// Fragment
Fragment fragment = new DummyFragment();
// Bundle , Fragment
Bundle args = new Bundle();
args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
// fragment
fragment.setArguments(args);
// FragmentTransaction
FragmentTransaction ft = getFragmentManager().beginTransaction();
// fragment Activity container
ft.replace(R.id.container, fragment);
//
ft.commit();
return true;
}
}
Android 에서 Action Bar 의 사용 은 기본적으로 여기까지 입 니 다.앞으로 프로젝트 에 문제 가 생기 면 바로 업데이트 할 것 입 니 다.질문 이 있 으 면 댓 글 을 환영 합 니 다.읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.