2013-05-28 2 views
2

Пожалуйста, дайте мне знать, как добавить кнопки в строку заголовка.Android - добавление кнопок в заголовок

  • Удалите заголовок полностью и создайте собственное название с помощью ImageView, например.

или

  • Используйте другой подход

Моя цель что-то похожее на приложение Facebook enter image description here

UPDATE: Уровень API> = 10

+1

Обычно я делаю свою собственную строку заголовка, поэтому я могу добавить кнопки, значок состояния ... Нужно закодировать свою собственную ViewGroup. –

+0

Спасибо за ответ ... Мне было интересно, если это лучший подход? –

+1

Эта ссылка может вам помочь: http://stackoverflow.com/questions/5663068/custom-viewgroup-example-please –

ответ

0

Я думаю, это лучшая практика использования ActionBar Android. Предпочитайте меню действий вместо кнопок в пользовательской строке заголовка.

Пожалуйста, см: There's given refresh and edit action menu

И для дальнейшей реализации ActionBar см:

  1. http://www.vogella.com/articles/AndroidActionBar/article.html
  2. developer.android.com/guide/topics/ui/actionbar.html
+0

Спасибо за ответ, я обновил свой вопрос ...Уровень API 10 - моя минимальная версия. –

+0

Да ..! Есть возможность дать поддержку от уровня API 8, вы можете использовать библиотеку SherlockActionbar. Загрузите библиотеку из: http://actionbarsherlock.com/ – Prat

+0

cool ... Я буду использовать ее :) –

0

Мое решение с использованием пользовательской ViewGroup (из RelativeLayout), поэтому я могу использовать его в разных действиях без копирования xml. Это простой пример, который обновляет текстовое представление с заголовком. Вы можете добавить кнопки к относительной компоновке, чтобы они работали так, как вам нужно.

Но если у Вас есть лишь активность, лучше, если вы включите его в качестве суб расположения основного макета вашей деятельности

public class StatusBar extends RelativeLayout { 

private TextView textViewTitle; 

    public StatusBar(Context context, AttributeSet attrs) { 
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     layoutInflater.inflate(R.layout.ui_status_bar, this, true); 
     super(context, attrs); 
} 

@Override 
    public void onFinishInflate() { 
     super.onFinishInflate(); 

     textViewTitle = (TextView) findViewById(R.id.textViewTitle); 
} 

private void updateStatusBar(String title) { 
this.textViewTitle.setText(title) 
} 
} 

И в ui_status_bar.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/theme_color_darker" 
    android:gravity="center_vertical" > 

    <TextView 
     android:id="@+id/textViewTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="5dp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textStyle="bold" /> 

</RelativeLayout> 

в вашей деятельности вы можете использовать его следующим образом:

<com.uicomponents.statusbar.StatusBar 
    android:id="@+id/statusBar" 
    style="@style/status_bar" /> 

+0

Спасибо за ответ. Просто для того, чтобы было ясно: R.layout.ui_status_bar - это ссылка на XML? можете ли вы немного разобраться? –

+0

Трудно объяснить, если у вас нет опыта работы с custm View и viewGroups. layout.ui_status_bar.xml входит в макет/папку в проекте Android. когда вы компилируете, эта планета может быть загружена по ее ссылке из ресурсов (т. е. R.layout.ui_status_bar), как вы делаете загрузку макета для этой активности. –

Смежные вопросы