Подтвердить что ты не робот

Активность Android без ActionBar

У меня разные Activities в моем приложении, и во всех них я не хочу Action Bar. Я не могу найти, как отключить его. Я попытался найти атрибут, чтобы применить его к main_activity.xml, но пока ничего не нашел. Может кто-нибудь мне помочь?

4b9b3361

Ответ 1

Ха-ха, я тоже застрял на этом этапе некоторое время назад, поэтому я рад, что могу помочь вам с решением, которое сработало для меня, по крайней мере :)

То, что вы хотите сделать, это определить новый стиль в values /styles.xml, чтобы он выглядел следующим образом

<resources>
    <style name = "AppTheme" parent = "android:Theme.Holo.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name = "NoActionBar" parent = "@android:style/Theme.Holo.Light">
        <item name = "android:windowActionBar">false</item>
        <item name = "android:windowNoTitle">true</item>
    </style>

</resources>

Только стиль NoActionBar интересен для вас. Наконец, вы должны установить, как ваша тема приложения в AndroidManifest.xml, так что это выглядит так

<application
    android:allowBackup = "true"
    android:icon = "@drawable/ic_launcher"
    android:label = "@string/app_name"
    android:theme = "@style/NoActionBar"   <!--This is the important line-->
    >
    <activity
    [...]

Я надеюсь, что это поможет, если нет, дайте мне знать.

Ответ 2

Существует несколько способов сделать это.

1) Измените тему в манифесте Android

Ниже элемента приложения вы найдете тег темы. Замените его этим -

android:theme="@android:style/Theme.NoTitleBar"

Если вы используете AppCompat, используйте @android:style/Theme.AppCompat.NoActionBar.

Это задает тему для всех видов деятельности. Если вам не нужна панель действий с определенной активностью, задайте тему в контейнере действий, то есть

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

Вы также можете установить тему android:theme="@android:style/Theme.NoTitleBar" в стилях и использовать ее позже.


2) Создайте пользовательскую тему

Добавьте это в res/values/styles.xml

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
     <item name="windowActionBar">false</item>
     <item name="android:windowNoTitle">true</item>
</style>

а затем установите его как свою тему активности в манифесте:

<activity android:theme="@style/NoActionBar" ... />

3) Динамическое удаление панели действий

Поместите этот код в метод onCreate перед настройкой представления содержимого -

getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();

Если вы используете библиотеку поддержки, используйте getSupportActionBar().

Ответ 3

Учитывая, что все отправляют старые способы скрытия ActionBar, это правильный способ реализовать его в стилях для библиотеки поддержки AppCompat. Который я настоятельно предлагаю двигаться к, если вы еще этого не сделали.

Простое удаление ActionBar

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>

Если вы используете библиотеки поддержки appcompat, это самый простой и рекомендуемый способ скрыть ActionBar, чтобы сделать полный экран или начать реализацию на панели инструментов в ваших макетах.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Your Toolbar Color-->
    <item name="colorPrimary">@color/primary</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>

    <!-- colorAccent is used as the default value for colorControlActivated,
     which is used to tint widgets -->
    <item name="colorAccent">@color/accent</item>

    <!-- You can also set colorControlNormal, colorControlActivated
     colorControlHighlight, and colorSwitchThumbNormal. -->
</style>

Затем, чтобы изменить цвет панели инструментов

<android.support.v7.widget.Toolbar
    android:id="@+id/my_awesome_toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/primary" />

Последняя заметка: класс Activity должен расширять AppCompatActivity

public class MainActivity extends AppCompatActivity {

<!--Activity Items -->

}

Ответ 4

Вы также можете изменить наследование от ActionBarActivity к Activity, как написано здесь.

ОБНОВЛЕНИЕ

Хорошее решение здесь:

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide();
    setContentView(R.layout.activity_main);
}

Ответ 5

Если вы используете AppCompat, объявите свою активность в AndroidManifest.xml следующим образом:

<activity
    android:name=".SomeActivity"
    ...
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

Ответ 6

Я попытаюсь показать это как можно проще:

ДЕКЛАРАЦИЯ ПОЛНАЯ ЭКРАНИРОВКА В файле ANDROID MAINIFEST:

<activity
            android:name=".GameActivity"
            android:label="@string/title_activity_game"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

Теперь в студии Android (если вы ее используете) откройте файл Activity Activity (в моем примере activity_game.xml) в дизайнере и выберите тему (над мобильным телефоном в дизайнере нажмите кнопку с небольшим кружком), а затем выберите Mainfest Themes на слева, а затем NoTitleBar.Fullscreen.

Надеюсь, это поможет!

Ответ 7

Если вы хотите, чтобы в большинстве ваших действий была панель действий, вы, вероятно, наследовали бы свою базовую тему по умолчанию (это автоматически генерируется Android Studio по умолчанию):

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

Затем добавьте специальную тему для вашей беспроблемной деятельности:

<style name="AppTheme.NoTitle" parent="AppTheme">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="actionBarTheme">@null</item>
    </style>

Для меня настройка actionBarTheme на @null была решением.

Наконец, настройте действие в файле манифеста:

<activity ... android:theme="@style/AppTheme.NoTitle" ... >

Ответ 8

откройте Manifest и добавьте атрибут theme = "@style/Theme.AppCompat.Light.NoActionBar" к активности, которую вы хотите, без панели действий:

<application
    ...
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        ...
    </activity>
</application>

Ответ 9

Пожалуйста, найдите тему по умолчанию в styles.xml

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

И изменить родителя таким образом

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

Ответ 10

Создайте новый стиль с любым именем, в моем случае "Theme.Alert.NoActionBar"

<style name="Theme.Alert.NoActionBar" parent="Theme.AppCompat.Dialog">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

установите родительский элемент как "Theme.AppCompat.Dialog", как в приведенном выше коде

откройте файл AndoridManifest.xml и настройте действие, которое вы хотите отобразить в качестве диалогового окна оповещения, как это

    <activity
        android:excludeFromRecents="true"
        android:theme="@style/Theme.Alert.NoActionBar"
        android:name=".activities.UserLoginActivity" />

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

Ответ 11

Это действительно просто. Просто зайдите в ваш styles.xml измените родительскую тему на Theme.AppCompat.Light.NoActionBar или Theme.AppCompat.NoActionbar и все готово.. :)