Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Action Bar示例代碼 (一)

Action Bar示例代碼 (一)

編輯:中級開發

今天一起來看下Android Action Bar的示例代碼,我們通過活動欄做一個簡單選項菜單。下面這個例子將演示ActionBar.NAVIGATION_MODE_STANDARD、ActionBar.NAVIGATION_MODE_TABS和                     : ActionBar.NAVIGATION_MODE_STANDARD等模式的效果。最後Android123仍然提示大家Action Bar是android 3.0 honeycomb才開始有的特性,老版本的SDK和固件無法使用。

public class ActionBarDisplayOptions extends Activity  implements VIEw.OnClickListener, ActionBar.TabListener {
    private View mCustomVIEw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentVIEw(R.layout.action_bar_display_options);

        findVIEwById(R.id.toggle_home_as_up).setOnClickListener(this);
        findVIEwById(R.id.toggle_show_home).setOnClickListener(this);
        findVIEwById(R.id.toggle_use_logo).setOnClickListener(this);
        findVIEwById(R.id.toggle_show_title).setOnClickListener(this);
        findVIEwById(R.id.toggle_show_custom).setOnClickListener(this);
        findVIEwById(R.id.toggle_navigation).setOnClickListener(this);
        findVIEwById(R.id.cycle_custom_gravity).setOnClickListener(this);

        mCustomVIEw = getLayoutInflater().inflate(R.layout.action_bar_display_options_custom, null);
 
        final ActionBar bar = getActionBar();
        bar.setCustomView(mCustomVIEw,
                new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this));
        bar.addTab(bar.newTab().setText("Tab 2").setTabListener(this));
        bar.addTab(bar.newTab().setText("Tab 3").setTabListener(this));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.display_options_actions, menu);
        return true;
    }

    public void onClick(VIEw v) {
        final ActionBar bar = getActionBar();
        int flags = 0;
        switch (v.getId()) {
            case R.id.toggle_home_as_up:
                flags = ActionBar.DISPLAY_HOME_AS_UP;
                break;
            case R.id.toggle_show_home:
                flags = ActionBar.DISPLAY_SHOW_HOME;
                break;
            case R.id.toggle_use_logo:
                flags = ActionBar.DISPLAY_USE_LOGO;
                break;
            case R.id.toggle_show_title:
                flags = ActionBar.DISPLAY_SHOW_TITLE;
                break;
            case R.id.toggle_show_custom:
                flags = ActionBar.DISPLAY_SHOW_CUSTOM;
                break;

            case R.id.toggle_navigation:
                bar.setNavigationMode(
                        bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD
                                ? ActionBar.NAVIGATION_MODE_TABS
                                : ActionBar.NAVIGATION_MODE_STANDARD);
                return;
            case R.id.cycle_custom_gravity:
                ActionBar.LayoutParams lp = (ActionBar.LayoutParams) mCustomVIEw.getLayoutParams();
                int newGravity = 0;
                switch (lp.gravity & Gravity.HORIZONTAL_GRAVITY_MASK) {
                    case Gravity.LEFT:
                        newGravity = Gravity.CENTER_HORIZONTAL;
                        break;
                    case Gravity.CENTER_HORIZONTAL:
                        newGravity = Gravity.RIGHT;
                        break;
                    case Gravity.RIGHT:
                        newGravity = Gravity.LEFT;
                        break;
                }
                lp.gravity = lp.gravity & ~Gravity.HORIZONTAL_GRAVITY_MASK | newGravity;
                bar.setCustomView(mCustomVIEw, lp);
                return;
        }

        int change = bar.getDisplayOptions() ^ flags;
        bar.setDisplayOptions(change, flags);
    }

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }

    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }
}

 接下來是文中涉及的3個XML布局文件:

 相關的XML布局action_bar_display_options.XML代碼為

 <?XML version="1.0" encoding="utf-8"?>

<LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orIEntation="vertical">
    <Button android:id="@+id/toggle_home_as_up"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/toggle_home_as_up" />
    <Button android:id="@+id/toggle_show_home"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/toggle_show_home" />
    <Button android:id="@+id/toggle_use_logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/toggle_use_logo" />
    <Button android:id="@+id/toggle_show_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/toggle_show_title" />
    <Button android:id="@+id/toggle_show_custom"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/toggle_show_custom" />
    <Button android:id="@+id/toggle_navigation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/toggle_navigation" />
    <Button android:id="@+id/cycle_custom_gravity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cycle_custom_gravity" />
</LinearLayout>

相關的自定義布局文件action_bar_display_options_custom.XML代碼為

<?XML version="1.0" encoding="utf-8"?>

<Button XMLns:android="http://schemas.android.com/apk/res/android"
        android:text="@string/display_options_custom_button" />

相關的menu布局xml文件display_options_actions.XML代碼為

 <?XML version="1.0" encoding="utf-8"?>

<menu XMLns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/simple_item"
          android:title="@string/display_options_menu_item" />
</menu>

  上面的string後的元素大家可以根據自己的情況進行替換。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved