Как установить другую метку для средства запуска, а не название действия?

Этот вопрос задавался ранее, но без удовлетворительного ответа! Поэтому я пытаюсь сделать это еще раз.

Я хочу присвоить значку запуска приложений (который отображается на стартовом экране!) Другую, более короткую подпись. Кажется, программа запуска берет свою метку из раздела mainfest о метке основной активности, как здесь:

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Я уже изменил исходную ссылку на имя моего приложения @ string / app_name на другой, более короткий ресурс строки здесь.

НО - большой НО : это также, конечно, меняет название этого занятия по умолчанию! И я не хотел, чтобы это произошло, достаточно места для длинного имени приложения! Повторная установка длинного заголовка в onCreate с использованием метода setTitle (int) также не годится, потому что короткое имя будет видно пользователю в течение короткого времени, но достаточно долго, чтобы заметить!

И - пожалуйста, не отвечайте на мой вопрос, ссылаясь на пользовательский заголовок ... Я не хочу идти так долго Кстати, просто из-за глупого заголовка строки! Рисовать собственную строку заголовка для такого небольшого эффекта - боль!

Нет ли простого способа просто дать программе запуска другую строку для отображения? Спасибо за ваши ответы!

Редактировать: Еще одна причина, по которой наличие настраиваемого заголовка заголовка - это боль, заключается в том, что он не будет выглядеть как заголовок заголовка по умолчанию, мне пришлось бы явно сделать так, чтобы он выглядел одинаково на каждом устройстве ! И это не может быть решением, если, в конце концов, я не хочу другого внешнего вида!

265
задан captncraig 4 May 2017 в 11:13
поделиться

2 ответа

Вы можете сделать что-то вроде этого:

public class FooBar extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // change title
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
    }
}

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

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="foo bar"/>

В вашем файле AndroidManifest.xml вам просто нужно указать заголовок для приложения, который что будет отображаться на значке запуска. Для вашей деятельности вам не нужно указывать там заголовок.

0
ответ дан 23 November 2019 в 02:26
поделиться

Возможно, это не удовлетворит ваши потребности, но задумывались ли вы о создании экрана-заставки, который отображается на очень короткое время (с заголовком по умолчанию), а затем запускает ваш новое фактическое «основное» действие с выбранным вами заголовком с использованием метода setTitle(int)? Я не пробовал это, чтобы увидеть, работает ли это, но это может создать приятную работу, которая не показывает менее чем бесшовную природу того, чего вы пытаетесь достичь.

4
ответ дан 23 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: