Настройка заголовка и субтитров 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!"