Android Theme.NoTitleBar не работает

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

Я хочу удалить заголовок моего приложения

Выпуск:

Хотя я ставлю

андроид:Theme.Light.NoTitleBar

в моем манифесте есть пробел в строке заголовка. Из-за чего вся моя раскладка толкается вниз.

Я пытался использовать

requestWindowFeature(Window.FEATURE_NO_TITLE);

а также

GetWindow() setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN).

но все равно пространство заголовка не удаляется.

Вот так выглядит приложение

Я думаю, что это связано с классом Custom LinearLayout, который содержит основной скользящий макет. Но я не могу удалить пространство заголовка из пользовательского класса макета. Предложите лучшее решение.

Пользовательский класс макета

   public class MainLayout extends LinearLayout {
        public MainLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
        public MainLayout(Context context) {
            super(context);
        }

        // Overriding LinearLayout core methods
        // layout based on the children
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);

            mainLayoutWidth = MeasureSpec.getSize(widthMeasureSpec);
            menuRightMargin = mainLayoutWidth * 10 / 100;
        }

        @Override
        protected void onAttachedToWindow() {
            super.onAttachedToWindow();
            menu = this.getChildAt(0);
            content = this.getChildAt(1);   
            content.setOnTouchListener(new OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    return MainLayout.this.onContentTouch(v, event);
                }
            });

@Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        if(changed) {
           LayoutParams contentLayoutParams = (LayoutParams)content.getLayoutParams();
            contentLayoutParams.height = this.getHeight();
            contentLayoutParams.width = this.getWidth(); LayoutParams menuLayoutParams = (LayoutParams)menu.getLayoutParams();
        menuLayoutParams.width = this.getWidth() - menuRightMargin;          
        }

        menu.layout(left, top, right - menuRightMargin, bottom);
        content.layout(left + contentXOffset, top, right + contentXOffset, bottom);

      }
     }

7 ответов

Решение

Наконец-то я смог удалить пространство заголовка. Как оказалось, включая этот тег

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

При подаче заявления в манифесте сделали приложение полноэкранным и исправили проблему. Но я хотел, чтобы строка состояния была видна в моем приложении. Поэтому мне пришлось скомпрометировать строку состояния на версиях для Android, в которых пространство заголовков не было уменьшено, и позволить ему быть таким же на других версиях. Вот как я это решил.

в манифесте я сохранил код как есть

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

удалить заголовок в приложении

и в упражнении, в котором использовался пользовательский линейный макет, я проверил версию Android и держал приложение в полноэкранном режиме на версиях, меньших и равных Gingerbread.

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD) 
{ 
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
WindowManager.LayoutParams.FLAG_FULLSCREEN); 
}

Вы можете указать непосредственно в файле манифеста деятельности

<activity android:name=".MainActivity"
      android:label="@string/app_name"
      android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

Попробуйте это в вашем файле манифеста

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

В значении \style.xml укажите название и темы, например:

Затем перейдите к своему добавлению androidmainfest.xml внутри действия, например.. android:theme="@style/NoActionBar"

Кажется, что Theme.NoTitleBar работает только применительно ко всему приложению, а не к самой деятельности. Поэтому поместите его в тег приложения (в манифесте):

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

Затем добавьте любой пользовательский стиль для каждого действия.

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

Добавьте свойство android:theme в ваш AndroidManifest.xml:

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

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

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

// Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
Другие вопросы по тегам