#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), следуйте этому руководству: ссылка , затем скопируйте файлы в этот проект.