it-swarm.com.ru

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

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

50
Lutscha

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

То, что вы хотите сделать, это определить новый стиль в 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
    [...]

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

74
JRsz

Есть несколько способов сделать это.

1) Изменить тему в Android Manifest

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

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().

63
Confuse

Если учесть, что все публикуют старые способы скрытия 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 -->

}
8
Eugene H

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

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

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

Обновление

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

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

откройте 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>
3
Mahmoud salah eldien saber

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

ОБЪЯВЛЕНИЕ ПОЛНОЙ ЭКРАННОЙ АКТИВНОСТИ В файле Android MAINIFEST:

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

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

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

2
user4009281

Если вы хотите, чтобы у большинства ваших действий была панель действий, вы, вероятно, унаследовали бы вашу базовую тему от темы по умолчанию (она автоматически генерируется 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 to @null была решением.

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

<activity ... Android:theme="@style/AppTheme.NoTitle" ... >
2
Claude

Стиль по умолчанию вы получаете в res/value/style.xml как

  <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
  </style>

И только ниже, как в вашем теге активности,

Android:theme="@style/AppTheme.NoActionBar"
1
Prashant Mhetre

Пожалуйста, найдите тему по умолчанию в 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">
0
D. Sergeev