Панель навигации, общая для всех действий

#android

#Android

Вопрос:

Я искал варианты того, как разместить панель навигации, общую для всех видов деятельности. Все еще не могу придумать наилучший способ сделать это. Панель навигации должна иметь заголовок для экрана и кнопку «Назад». Или может быть два в некоторых действиях.
Какой наилучшей практике я должен следовать?

Спасибо

Ответ №1:

Вы можете определить панель навигации в отдельных header.xml макет, подобный этому:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@ id/header_layout"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">

  <!-- 1px border top -->
  <ImageView
    android:layout_width="fill_parent"
    android:layout_height="1px"
    android:background="@color/header_border_top" />

  <!-- header with text and buttons -->
  <RelativeLayout
    android:layout_height="43dp"
    android:layout_width="fill_parent"
    android:background="@color/header_background">

    <!-- left side -->
    <LinearLayout
      android:id="@ id/header_home_button_layout"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:orientation="horizontal"
      android:layout_alignParentLeft="true">

      <!-- home button -->
      <ImageButton
        android:id="@ id/header_home_button"
        android:src="@drawable/header_btn_home"
        android:onClick="onHomeClick" />

    </LinearLayout>

    <!-- header text -->
    <TextView
      android:id="@ id/header_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:text="@string/app_name"
      android:textSize="20dp"
      android:textStyle="bold"/>

    <!-- right side -->
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:orientation="horizontal"
      android:layout_alignParentRight="true">

      <!-- back button -->
      <ImageButton
        android:id="@ id/header_back_button"
        android:src="@drawable/header_btn_back"
        android:onClick="onBackClick"
        android:visibility="gone" />

    </LinearLayout>

  </RelativeLayout>

  <!-- 1px border bottom -->
  <ImageView
    android:layout_width="fill_parent"
    android:layout_height="1px"
    android:background="@color/header_border_bottom" />

</LinearLayout>
  

Затем включите этот заголовок в макет всех ваших действий:

 <include
    layout="@layout/header" />
  

И убедитесь, что все ваши классы расширяют родительский класс, который имеет методы onHomeClick и onBackClick…

Комментарии:

1. Спасибо peceps 🙂 В приведенном выше ответе мне было предложено использовать ActionBar. Ваше предложение также удобно. Но каков наилучший подход для этого. Пожалуйста, искреннее предложение 😉

Ответ №2:

Мой друг создал проект с открытым исходным кодом под названием Android Actionbar, звучит так, как будто вы хотите делать то, что делает этот проект. Это проект библиотеки, поэтому вы можете использовать его в своем приложении. На сайте также есть примеры.

Вот как это выглядит:

введите описание изображения здесь

Комментарии:

1. Существует также ActionBarSherlock, который использует вышеупомянутый виджет для Android 1.x / 2.x и встроенную панель действий Honeycomb на Android 3.x: actionbarsherlock.com

2. Wao .. это очень полезно. Большое спасибо Kaj 🙂

3. Панель действий и actionbar example не импортируются в eclipse. Как я могу сделать это библиотекой?

4. Похоже, что это проект maven. Создайте новый проект Android (eclipse), следуйте этому руководству: ссылка , затем скопируйте файлы в этот проект.