Удалить значок из лаунчера

Это самая популярная проблема, и никто не знает, как ее решить...

Например:

<application
    android:allowBackup="true"
    android:icon="@drawable/add"
    android:theme="@style/CustomTheme"
    android:showAsAction="ifRoom|withText">

И теперь мне нужно скрыть android:icon или просто удалить его

<application
    android:allowBackup="true"
    android:theme="@style/CustomTheme"
    android:showAsAction="ifRoom|withText">

Но в этом случае у меня есть значок Android по умолчанию -_- Можно ли навсегда удалить этот значок?


person user1081640    schedule 05.04.2013    source источник
comment
вы пробовали с getSupportActionBar().setDisplayUseLogoEnabled(false); ?   -  person Blackbelt    schedule 05.04.2013
comment
getSupportActionBar() не определен, а getActionBar() предназначен только для API 11+, но мне нужно какое-либо разрешение для API 8. Знаете ли вы, почему метод getSupportActionBar() не определен, и я не могу его импортировать?   -  person user1081640    schedule 05.04.2013
comment
Вы используете ActionBarSherlock?   -  person Blackbelt    schedule 05.04.2013
comment
Нет, я не использую эту библиотеку. Это хорошая библиотека для создания любых панелей действий, кнопок и тому подобного?   -  person user1081640    schedule 05.04.2013
comment
да, это библиотека для старых мобильных устройств, чтобы получить панель действий. Ваш вопрос связан с панелью действий?   -  person Blackbelt    schedule 05.04.2013
comment
Это связано с верхним меню на экране Android, так что да. Я пытаюсь создать меню с динамическими элементами и одним статическим элементом для открытия новых фрагментов или действий, где пользователь может выбрать любые значки для добавления. Когда пользователь помещает любой значок из этого фрагмента/действия, этот значок будет добавлен в верхнее меню как новый элемент. Это хорошее решение? или есть какое-нибудь простое решение для этого?   -  person user1081640    schedule 05.04.2013


Ответы (3)


Это может удалить значок запуска после следующей перезагрузки:

PackageManager pm = getPackageManager();
pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

Также вам может помочь эта ссылка:

Скрыть значок запуска приложения в строке заголовка, когда активность начинается в Android

person NullPointer    schedule 05.04.2013

Вы можете создать свою собственную иконку.

Поэтому вы можете попробовать просто создать картинку нужного размера и состоящую только из прозрачного фона.

person QArea    schedule 05.04.2013

У меня есть решение! Я начал изучать Java и Android пару дней назад, поэтому мое решение нужно проверить кем-то более опытным, чем я. Здесь у вас есть решение:

Шаг 1

В разделе файлового приложения AndroidManifest.xml нам нужно объявить тему NoTitleBar.

<application
    ...
    android:theme="@android:style/Theme.NoTitleBar">
...
</application>

Шаг 2

Теперь у нас нет строки заголовка, когда наш загрузчик приложения (мы установили Theme.NoTitleBar), поэтому нам нужно создать ее или изменить android:theme. Я выбираю второй вариант, поэтому:

public class MainActivity extends SherlockActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.AppTheme);
            ....
    }
    ....
}

R.style.AppTheme — это стиль, созданный нами, но мы можем использовать любой доступный стиль из Android API.

Шаг 3 Теперь наша строка заголовка вернулась, но у нас все еще есть значок и заголовок. Поэтому нам нужно отключить его, и теперь у нас есть два варианта сделать это. Во-первых, когда мы используем Android API 11 или новее, и нам не нужно использовать библиотеки ActionBarSherlock, а во-вторых, для приложений ниже, чем API 11.

API 11 или ниже

...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    actionBar = getActionBar();
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
            ...
}
...

API 11 или более поздней версии

...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
            ...
}
...

Итак, в первом случае мы используем getActionBar() по умолчанию для управления actionBar, но во втором случае мы используем getSupportActionBar из ActionBarSherlock.

Сделанный :)

person user1081640    schedule 05.04.2013