android ملئ إخفاء العنوان في وضع ملء الشاشة؟




ملء الشاشة من الكيبورد (5)

الطريقة التي أتعامل بها مع ألعاب Android الخاصة بي هي الاتصال بالخط التالي في onCreate () من نشاطي

requestWindowFeature(Window.FEATURE_NO_TITLE);

يمكنني بعد ذلك إيقاف تشغيل إمكانية ملء الشاشة وتشغيلها باستخدام التعليمة البرمجية التالية في فئة النشاط (عادةً ما يتم استدعاؤها من خيار قائمة) (المتغير m_contentView هو طريقة العرض من findViewById () باستخدام المعرّف الذي استخدمته عند استدعاء setContentView () في على خلقك)

private void updateFullscreenStatus(boolean bUseFullscreen)
{   
   if(bUseFullscreen)
   {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    }
    else
    {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    m_contentView.requestLayout();
}

أستخدم هذه التقنية في جميع ألعابي دون مشكلة.

لماذا تقول

requestWindowFeature (Window.FEATURE_NO_TITLE)؛ ليس خيارا بالطبع

؟

::تصحيح::

حسنًا إذا كنت تحاول إظهار وإخفائها ديناميكيًا خلال مدة النشاط ، فأنا لست متأكدًا مما إذا كنت تستطيع فعل ذلك باستخدام عنوان النافذة الرسمي بسبب الملاحظة التي تم ذكرها حول ميزات النافذة التي تحتاج إلى تعيينها قبل setContentView () يسمى ( link )

شيء واحد يمكنك القيام به هو تنفيذ شريط العنوان الخاص بك وعرض وإخفاء ذلك بشكل ديناميكي ... أنا وضعت هذا المثال الذي يجب أن يحدد لك المسار الصحيح

هذا هو ملف التخطيط

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:fadingEdgeLength="0sp"
    >

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/myTitleBarLayout" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >

        <TextView
            android:id="@+id/myTitleBarTextView"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:text="@string/app_name"
            android:paddingTop="4dip"
            android:paddingBottom="4dip"
            android:paddingLeft="6dip"
            android:textStyle="bold"
            android:shadowColor="#BB000000"
            android:shadowRadius="3.0"
            android:shadowDy=".25"

        />

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:background="#CCEEEEEE"
            android:padding="10dip"
        />
    </LinearLayout>

    <ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_weight="1"
        >

        <!-- Insert your regular layout stuff here -->

        <Button android:id="@+id/toggle_title_button" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:text="Toggle Title" 
        />
    </ScrollView>
</LinearLayout>

وإليك رمز النشاط الرئيسي الذي سيسمح لك بتشغيل شريط العنوان المخصص وإيقافه

package com.snctln.test.HelloGridView;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class HelloGridView extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TextView tv = (TextView)this.findViewById(R.id.myTitleBarTextView);
        tv.setBackgroundColor(0xFF848284);
        tv.setTextColor(0xFFFFFFFF);

        Button toggleTitleButton = (Button)this.findViewById(R.id.toggle_title_button);

        toggleTitleButton.setOnClickListener( new OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    LinearLayout ll = (LinearLayout)findViewById(R.id.myTitleBarLayout);

                    if(ll.getVisibility() == View.GONE)
                    {
                        ll.setVisibility(View.VISIBLE);
                    }
                    else
                    {
                        ll.setVisibility(View.GONE);
                    }
                }
            });
    }
}

لا يبدو الأمر مثاليًا ، ولكن يمكنك دائمًا اللعب بالتخطيط لبعض الوقت للقيام بذلك.

النص البديل http://i39.tinypic.com/120sfp1.png

فكرتي الأخرى هي إذا كنت تريد فقط إخفاء كل شيء لإظهار شريط تقدم لماذا لا تستخدم ProgressDialog ؟

هذا الفصل سهل الاستخدام ...

progressDlg = ProgressDialog.show(context, getString(R.string.progress_dialog_title_prepare), getString(R.string.progress_dialog_body_prepare));

// do long running operation

if(operationFailed)
{
    progressDlg.cancel();
}
else
{
    progressDlg.dismiss();
}

هل هناك طريقة لإخفاء عنوان النافذة بحيث لا يتم عرضها في وضع ملء الشاشة (

getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN,
                LayoutParams.FLAG_FULLSCREEN)

) ولكن بعد ذلك سوف تظهر على

getWindow().clearFlags(LayoutParams.FLAG_FULLSCREEN)

؟

requestWindowFeature(Window.FEATURE_NO_TITLE)

ليس خيارًا بالطبع لأن هذا لن يسمح باستعادته.


إضافة android:theme="@android:style/Theme.NoTitleBar.Fullscreen" إلى علامة التطبيق في ملف البيان سيجعل كل نشاط ملء الشاشة.


لتعطيل عنوان التطبيق الخاص بك (هو اسم التطبيق)

requestWindowFeature(Window.FEATURE_NO_TITLE)

لتعطيل شريط الإشعارات في الجزء العلوي (لذلك طلب إلى مدير تطبيق Android للسماح بملء الشاشة)

getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN)

نأمل أن يساعد هذا أي شخص يريد أن يعرف الفرق !!


if(useFullscreen)  
{  
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);  
}  
else  
{  
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);  
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  
}  

هذا العمل بالنسبة لي .. في طريقة onResume


هذا غير ممكن وفقا للمستندات ومجموعة جوجل الروبوت مطوري. لتنفيذ ذلك ، تحتاج إلى إضافة عنصر تخطيط 'title-like' مع النص الخاص بك وشريط التقدم وإخفاء / إظهار عندما تحتاج إليه. الآن - لا توجد طريقة أخرى حوله ، حيث يمكن التحكم في شريط العنوان فقط قبل استدعاء setContentView ولم يتغير بعد.





title