Настройка заголовка и субтитров Action Bar

Я хочу установить заголовок и субтитры моей панели действий перед компиляцией. У меня есть способ сделать это вот так:

ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");

Но я не хочу делать это во время выполнения. Есть ли какой-либо файл xml или любое место, где я могу указать эти заголовки?

Я пытаюсь добиться этого:

enter image description here

Изменить:

Причина, по которой я хочу это в xml, заключается в том, что я хочу, чтобы мое приложение поддерживалось на уровне API 8. И метод getActionBar() поддерживается, по крайней мере, на уровне 11.

Ответ 1

Вы можете сделать что-то подобное для кода для обеих версий:

/**
 * Sets the Action Bar for new Android versions.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void actionBarSetup() {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ActionBar ab = getActionBar();
    ab.setTitle("My Title");
    ab.setSubtitle("sub-title"); 
  }
}

Затем вызовите actionBarSetup() в onCreate(). if запускает код только для новых версий Android, а @TargetApi позволяет компилировать код. Поэтому он безопасен как для старых, так и для новых версий API.

В качестве альтернативы вы также можете использовать ActionBarSherlock (см. править), чтобы вы могли иметь ActionBar для всех версий. Вам нужно будет внести некоторые изменения, например, продлить действие SherlockActivity и вызвать getSupportActionBar(), однако это очень хорошее глобальное решение.

Edit

Обратите внимание, что когда этот ответ был изначально написан, ActionBarSherlock, который с тех пор устарел, был решением для совместимости.

В настоящее время Google appcompat-v7 библиотека предоставляет ту же функциональность, но поддерживается (и активно обновляется) компанией Google. Действия, необходимые для реализации ActionBar, должны:

  • extend AppCompatActivity
  • используйте Theme.AppCompat производную

Чтобы получить экземпляр ActionBar, используя эту библиотеку, используется метод aptly-named getSupportActionBar().

Ответ 2

Заголовок для панели действий может быть в AndroidManifest, здесь:

<activity 
    . . .
          android:label="string resource" 
    . . .
</activity>

Android: меткаПользовательский ярлык для этой деятельности. Этикетка отображается на экране, когда действие должно быть представлено пользователю. Он часто отображается вместе с значком активности. Если этот атрибут не установлен, используется набор меток для приложения в целом вместо этого (см. атрибут метки элемента). ярлык активности - установлен ли здесь или элементом - также является меткой по умолчанию для всех фильтров для намерений активности (см. атрибут метки элемента). Этикетка должна быть установить как ссылку на строковый ресурс, чтобы он мог быть локализован как и другие строки в пользовательском интерфейсе. Однако, как удобство в то время как вы разрабатываете приложение, оно также может быть установлено как необработанное строка.

Ответ 3

Попробуйте следующее:

android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");

Ответ 4

Есть еще один вариант, который никто не прокомментировал: из библиотеки поддержки V7 был реализован Google ActionBarSupport, который совместим с ActionBar с Android 2.2 до последнего. Если вы измените свой ActionBar, вы можете сделать getSupportActionBar().setTitle("") на всех версиях Android.

Ответ 5

Неа! Вы должны сделать это во время выполнения.

Если вы хотите сделать свое приложение обратно совместимым, просто проверьте уровень API-интерфейса устройства. Если он выше 11, вы можете играть в ActionBar и устанавливать субтитры.

if(Integer.valueOf(android.os.Build.VERSION.SDK) >= 11){
    //set actionbar title
}

Ответ 6

    <activity android:name=".yourActivity" android:label="@string/yourText" />

Поместите этот код в файл манифеста Android и он должен указать заголовок панели действий, что вам нужно!

Ответ 7

Попробуйте следующее:

В файле strings.xml добавьте название и субтитры...

ActionBar ab = getActionBar();
ab.setTitle(getResources().getString(R.string.myTitle));
ab.setSubtitle(getResources().getString(R.string.mySubTitle));

Ответ 8

Попробуйте

Просто перейдите в свой файл манифеста. и вы определили метку для каждого действия в вашем файле манифеста.

<activity
        android:name=".Search_Video"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
    </activity>

здесь измените

Android: метка = "@строка/your_title"

Ответ 9

Это тривиальный однострочный слой в Котлине

supportActionBar?.title = getString(R.string.coolTitle)

Ответ 10

Для действия вы можете использовать этот подход для указания субтитров вместе с заголовком в манифесте.

манифеста:

<activity
    android:name=".MyActivity"
    android:label="@string/my_title"
    android:description="@string/my_subtitle">
</activity>

Активность:

try {
    ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    //String title = activityInfo.loadLabel(getPackageManager()).toString();
    int descriptionResId = activityInfo.descriptionRes;
    if (descriptionResId != 0) {
        toolbar.setSubtitle(Utilities.fromHtml(getString(descriptionResId)));
    }
}
catch(Exception e) {
    Log.e(LOG_TAG, "Could not get description/subtitle from manifest", e);
}

Таким образом вам нужно только указать строку заголовка один раз, и вы сможете указать субтитры прямо рядом с ним.

Ответ 11

Вы можете установить заголовок в панели действий с помощью AndroidManifest.xml. Добавьте метку в activity

<activity
            android:name=".YourActivity"
            android:label="Your Title" />

Ответ 12

supportActionBar?.title = "Hola tio"
supportActionBar?.subtitle = "Vamos colega!"