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



этот вопрос был задан раньше - но без удовлетворительного ответа на все! Так что я попробую еще раз.



Я хочу дать значок запуска приложения (тот, который отображается на стартовом экране!) другой, более короткий заголовок. Кажется, пусковая установка берет свою метку из раздела 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) метод тоже не помогает, потому что короткое имя будет видно пользователю в течение короткого времени, но достаточно долго, чтобы заметить!



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



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



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

559   8  

8 ответов:

видимо <intent-filter> может иметь атрибут метки. Если он отсутствует на этикетке, унаследованные от родительского компонента (либо деятельности или приложения). Таким образом, используя это, вы можете установить метку для значка запуска, все еще имея действие с его собственным названием.

обратите внимание, что, хотя это работает на эмуляторах, это может не работать на реальных устройствах, потому что это зависит от реализации запуска, которая используемый.

http://developer.android.com/guide/topics/manifest/intent-filter-element.html

<activity
  android:name=".ui.HomeActivity"
  android:label="@string/title_home_activity"
  android:icon="@drawable/icon">
  <intent-filter android:label="@string/app_name">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

боковое Примечание: также может иметь атрибут значка, но необъяснимо это делает не переопределить значок, указанный в Деятельность. Это может быть важно, если вы планируете использовать родной ActionBar в SDK 11+, который использует значок и логотип, указанные на Деятельность.

добавил Информация: метка наследуется от действия, а не от приложения.

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"       
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

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

в этом случае app_long_name будет отображаться со значком запуска, если мы не помещаем метку внутрь, как указано выше.

Я искал то же самое, и вот что сработало для меня.

<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>

это даст короткое имя значку запуска приложения.

чтобы добавить большее имя в панель приложений, вам просто нужно добавить:

this.setTitle(getResources().getString(R.string.app_name));

к вашему основному файлу java деятельности.

решение Марка Ренуфа не удается мне (с помощью Nexus 4 и Android 4.4). Он не работает при использовании ярлыков, ярлыки используют основную метку активности вместо имени приложения. Я видел некоторые приложения, такие как GMail и Google Keep, которые отлично работают. Но когда вы открываете их, я замечаю, что это похоже на момент между заголовком пустым и появляется заголовок (который кажется лучше, чем имя приложения, мигающее перед установкой заголовка с помощью setTitle()).

так вот лучшее решение I нашел:

Создайте стиль, в котором на панели действий не отображается заголовок / метка:

<style name="NoActionBarTitle" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/NoActionBarTitle.ActionBar</item>
</style>

<style name="NoActionBarTitle.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:displayOptions">showHome|useLogo</item>
</style>

Я использую навигационный ящик и использую логотип (потому что я использую логотип и значок для своего приложения). Вы можете использовать все, но Не используйте showTitle. Затем в AndroidManifest.xml, установите тему для MainActivity:

<activity
    android:name="com.xx.xxx.MainActivity"
    android:logo="@drawable/ic_icon_padding"
    android:theme="@style/NoActionBarTitle">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

затем в методе onCreate() метода MainActivity задайте название вашего действия Бар:

getActionBar().setTitle(R.string.your_title);

после, вы можете по телефонам:

getActionBar().setDisplayShowTitleEnabled(true);

сложно, но стоит.

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

я нашел обходной путь для этой проблемы

В manifest.xml

Напиши свое приложения на android:label на пусковой(основной) деятельности.

Это сделает ярлык вашей основной деятельности таким же, как и ярлык приложения.

Затем, в вашего пусковой(основной) деятельности написать это заявление

if (getSupportActionBar() != null) {
            getSupportActionBar().setTitle("main activity label");
        }

здесь напишите ярлык, который вы хотите дать своему лаунчеру (основной) вид деятельности.

при использовании Поддержка / Appcompat панель инструментов через setSupportActionBar() метод, название действия может быть установлено в панели инструментов XML:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    app:title="@string/activity_title"
    ...
/>

это переопределит метки приложений и действий, установленные в манифесте.

android.поддержка.v7.штучка.Панель инструментов

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

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 файл вам просто нужно задать название для приложения, которое будет отображаться во вкладке лаунчера. Для вашей деятельности вам не нужно устанавливать название там.

пусковая установка на самом деле показывает android:label и android:icon для activity(ies), которые объявляют

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Так что ярлык приложения не использовать.

Comments

    Ничего не найдено.