วิธีการซ่อนแถบการกระทำก่อนที่กิจกรรมจะถูกสร้างขึ้นแล้วแสดงอีกครั้ง?


243

ฉันต้องติดตั้งหน้าจอสแปลชในแอปรวงผึ้งของฉัน ฉันใช้รหัสนี้ใน onCreate ของกิจกรรมเพื่อแสดง splash:

setContentView(R.layout.splash);
getActionBar().hide();

และรหัสนี้เพื่อแสดง UI หลักหลังจากบางครั้ง:

setContentView(R.layout.main);
getActionBar().show();

แต่ก่อนที่ onCreate จะถูกเรียกและสาดปรากฏขึ้นมีเวลาเล็กน้อยเมื่อแถบการกระทำปรากฏขึ้น

ฉันจะทำให้แถบการกระทำมองไม่เห็นได้อย่างไร

ฉันพยายามใช้ชุดรูปแบบกับกิจกรรมที่ไม่มีแถบการกระทำ:

<item name="android:windowActionBar">false</item>

แต่ในกรณีนั้น getActionBar () จะคืนค่า null เสมอและฉันไม่พบวิธีที่จะแสดงมันอีกครั้ง


สำหรับTheme.AppCompat.Light... ใช้สิ่งนี้วิธีตอบ [1] [1]: stackoverflow.com/a/25365193/1364896
Sami Eltamawy

คำตอบ:


335

การตั้งค่าandroid:windowActionBar="false"ปิดการใช้งาน ActionBar อย่างแท้จริง แต่แล้วตามที่คุณบอกว่าgetActionBar();จะคืนค่าว่าง นี่คือการแก้ไขโดย:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    getActionBar().hide();

    setContentView(R.layout.splash); // be sure you call this AFTER requestFeature

สิ่งนี้จะสร้าง ActionBar และซ่อนทันทีก่อนที่จะมีโอกาสแสดง

แต่ตอนนี้มีปัญหาอื่น หลังจากใส่windowActionBar="false"ธีมแล้วกิจกรรมจะดึงชื่อหน้าต่างปกติแทน ActionBar
หากเราพยายามหลีกเลี่ยงสิ่งนี้โดยใช้*.NoTitleBarธีมสต็อกบางส่วนหรือพยายามใส่<item name="android:windowNoTitle">true</item>ในธีมของเราเองมันจะไม่ทำงาน
เหตุผลคือ ActionBar ขึ้นอยู่กับ Window Title เพื่อแสดงตัวเองนั่นคือ ActionBar เป็น Window Title ที่ถูกแปลง
ดังนั้นเคล็ดลับที่สามารถช่วยเราได้คือเพิ่มสิ่งอื่นเข้าไปในธีมกิจกรรม xml:

<item name="android:windowActionBar">false</item>
<item name="android:windowTitleSize">0dp</item>

สิ่งนี้จะทำให้ชื่อหน้าต่างมีความสูงเป็นศูนย์จึงมองไม่เห็นจริง

ในกรณีของคุณหลังจากเสร็จสิ้นการแสดงหน้าจอสแปลชที่คุณสามารถโทรได้

setContentView(R.layout.main);
getActionBar().show();

และคุณทำเสร็จแล้ว กิจกรรมจะเริ่มต้นโดยไม่มีการกะพริบของ ActionBar หรือแสดงชื่อหน้าต่าง

เพิ่ม: ถ้าคุณแสดงและซ่อน ActionBar หลายครั้งคุณอาจสังเกตเห็นว่าการแสดงครั้งแรกไม่ได้เคลื่อนไหว ตั้งแต่นั้นมาการแสดงและการซ่อนเป็นภาพเคลื่อนไหว หากคุณต้องการมีภาพเคลื่อนไหวในการแสดงครั้งแรกเกินไปคุณสามารถใช้สิ่งนี้:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_ACTION_BAR);

    // delaying the hiding of the ActionBar
    Handler h = new Handler();
    h.post(new Runnable() {     
        @Override
        public void run() {
            getActionBar().hide();
        }
    });

สิ่งเดียวกันสามารถทำได้ด้วย:

protected void onPostResume() {
    super.onPostResume();
    getActionBar().hide();

แต่อาจต้องใช้ตรรกะพิเศษเพื่อตรวจสอบว่านี่เป็นการแสดงครั้งแรกของกิจกรรมหรือไม่

ความคิดคือการหน่วงเวลาเล็กน้อยในการซ่อน ActionBar ในวิธีที่เราให้ ActionBar แสดง แต่ซ่อนมันทันที ดังนั้นเราไปไกลกว่าการแสดงที่ไม่มีภาพเคลื่อนไหวครั้งแรกและการแสดงครั้งต่อไปจะถูกพิจารณาเป็นอันดับที่สองดังนั้นมันจะเป็นการเคลื่อนไหว

เนื่องจากคุณอาจเดาได้ว่ามีโอกาสที่ ActionBar จะสามารถเห็นได้ก่อนที่มันจะถูกซ่อนโดยการดำเนินการล่าช้า กรณีนี้เป็นจริง เวลาส่วนใหญ่ยังไม่เห็นอะไรเลย แต่ในบางครั้งคุณสามารถเห็นการสั่นไหวของ ActionBar สักเสี้ยววินาที

ไม่ว่าในกรณีใด ๆ นี่ไม่ใช่ทางออกที่ดีดังนั้นฉันจึงยินดีรับข้อเสนอแนะ

นอกจากนี้สำหรับผู้ใช้ actionbar v7 สนับสนุนรหัสจะเป็น:

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

2
@newton_guima ใช่มันใช้งานได้ เพียงจำไว้ว่าให้ใช้ supportRequestWindowFeature (Window.FEATURE_ACTION_BAR)
scana

@Cleric - คุณทำทั้งหมดนี้ให้ทำงานsetThemeอย่างไร เพราะคำตอบของคุณใช้งานได้ดีถ้าฉันตั้งค่าชุดรูปแบบจาก Manifest แต่ถ้าฉันทำในรูปแบบonCreate(ในกรณีของฉันชุดรูปแบบขึ้นอยู่กับการตั้งค่าสำหรับชุดรูปแบบของแสงมืด) แถบแอ็คชั่น holo เริ่มต้นกะพริบก่อนชุดที่กำหนด อย่างไรก็ตาม. แต่นี่อาจจะเป็นคำถามที่สมบูรณ์อีกคำถามหนึ่ง
dentex

2
@Cleric ขอบคุณ ฉันแก้ไขปัญหาการตั้งค่าandroid:theme="@android:style/Theme.NoTitleBar"เป็นรายการแล้วsetTheme(R.style.MyTheme)ในกิจกรรมหลักของonCreate; สิ่งนี้ทำให้มั่นใจได้ (ใน Android 4+) หลีกเลี่ยงการใช้แฟลชของโฮโลเริ่มต้นActionBarก่อนที่ฉันจะกำหนดไว้ในธีมของฉัน (ฉันมาที่นี่เพื่อหาวิธีแก้ไขปัญหานี้จริง ๆ แล้วฉันไม่จำเป็นต้องมีหน้าจอสแปลช)
dentex

2
ฉันโทรหาgetSupportActionBar().hide();หลังจากนั้นgetWindow().requestFeature(Window.FEATURE_ACTION_BAR);ทุกอย่างก็ระเบิดด้วย NPE ความคิดใด ๆ มีปัญหากับTheme.AppCompat?
loeschg

1
@loeschg: ฉันมีปัญหาเดียวกันและพบวิธีแก้ปัญหานี้: stackoverflow.com/a/20315456/3514976
nonzaprej

50

ใช้รหัสง่ายๆนี้ในไฟล์. class ของคุณเพื่อซ่อนแถบการกระทำ

getSupportActionBar().hide();

37

หากคุณใช้ ActionBarSherlock ให้ใช้ Theme.Sherlock.NoActionBar Theme ในกิจกรรมของคุณ

<activity 
    android:name=".SplashScreenActivity"
    android:theme="@style/Theme.Sherlock.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

1
เช่นเดียวกับมาตรฐานของ Android 3+ ActionBar (ไม่ <activity android:theme="@android:style/Theme.NoActionBar">Sherlock):
Alex Semeniuk

โซลูชั่นที่สมบูรณ์แบบ :) ขอบคุณ
alicanbatur

7
ฉันไม่เห็นว่านี่เป็นคำตอบสำหรับคำถามของ Ilya อย่างไร การตั้งค่าชุดรูปแบบที่Theme.Sherlock.NoActionBarจะหมายถึงการโทรgetActionBar()หรือgetSupportActionBar()(เพื่อแสดงแถบการกระทำ) ส่งคืน null ...
Adil Hussain

@AlexSemeniuk เมื่อฉันใช้บรรทัดนั้นในรายการฉันได้รับข้อผิดพลาดนี้:error: Error: No resource found that matches the given name (at 'theme' with value '@android:style/ Theme.NoActionBar').
Si8

1
@ SiKni8 คุณแน่ใจหรือไม่ว่าคุณกำลังใช้ไลบรารี API13 + สำหรับแอปพลิเคชันของคุณ
Alex Semeniuk

19

สร้างสองสไตล์:

<style name="AppThemeNoBar" parent="Theme.AppCompat.Light">
     <item name="android:windowNoTitle">true</item>
</style>

<style name="AppThemeBar" parent="Theme.AppCompat.Light">
    <item name="android:windowNoTitle">false</item>
</style>

ตั้งค่า AppThemeNoBar เป็นชุดรูปแบบของแอปพลิเคชันและ AppThemeBar เป็นกิจกรรมที่คุณต้องการแสดง ActionBar การใช้สองสไตล์ที่คุณจะไม่เห็นแถบ Action ในขณะที่มุมมองกำลังโหลด

ตรวจสอบลิงค์Androidนี้: ซ่อนแถบการกระทำในขณะที่ดูโหลด


ที่สุด! ทำงานให้ฉัน ขอบคุณ :)
Dhofca

สิ่งนี้ใช้ไม่ได้กับ Android 2.3.3 ด้วย AppCompat แสดง ActionBar อย่างไรก็ตามวิธีนี้ใช้ได้กับ KitKat
YAR

17

สวัสดีฉันมีวิธีแก้ปัญหาง่ายๆโดยใช้ 2 ธีม

  1. ชุดรูปแบบหน้าจอ (เพิ่มลงในรายการ):

    <style name="SplashTheme" parent="@android:style/Theme.Holo.NoActionBar"> <item name="android:windowBackground">@color/red</item> </style>

  2. ชุดรูปแบบปกติ (เพิ่มในกิจกรรมของคุณโดย setTheme (R.style.Theme)):

    <style name="Theme" parent="@style/Theme.Holo"> <item name="android:windowBackground">@color/blue</item> </style>

เพื่อรองรับ SDK 10:

@Override    
public void onCreate(Bundle savedInstanceState) {

    setTheme(R.style.Theme);      
    super.onCreate(savedInstanceState);

      ...........
      ...........
}

15

ฉันพยายามซ่อนแถบคำสั่งบน Android 2.2 ด้วย แต่วิธีการเหล่านี้ไม่ได้ผล ทุกอย่างจบลงด้วยความผิดพลาด ฉันตรวจสอบ DDMS LOg มันบอกให้ฉันใช้ 'Theme.AppCompat'.At สุดท้ายที่ฉันแก้ไขปัญหาด้วยการเปลี่ยนandroid:theme="@android:style/Theme.Holo.Light.NoActionBar" Line

เข้าไป android:theme="@style/Theme.AppCompat.NoActionBar"และใช้งานได้ แต่ส่วนต่อประสานมืด

จากนั้นฉันก็ลอง android:theme="@style/Theme.AppCompat.Light.NoActionBar"และได้สิ่งที่ฉันต้องการในที่สุด

หลังจากนั้นเมื่อฉันค้นหา 'AppCompat' บนเว็บไซต์นักพัฒนาฉันได้รับสิ่งนี้

ดังนั้นฉันคิดว่าโซลูชันสำหรับ Android 2.2 คือ

<activity
    android:name=".MainActivity"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

และขอโทษสำหรับภาษาอังกฤษที่ไม่ดีเช่นเคย


12

ผลลัพธ์ที่ดีที่สุดสำหรับฉันคือการสร้างกิจกรรมด้วย ThemeNoTitleBar และไม่มีเนื้อหาเป็นตัวเรียกใช้งาน จากนั้นกิจกรรมนี้จะโทรหากันโดยตรง

แน่นอนถ้าคุณต้องการคุณสามารถเพิ่มเนื้อหาลงในกิจกรรม Splash แต่ในกรณีของฉันฉันต้องการแสดงแอปพลิเคชันโดยตรง

Manifest:

<activity
        android:name="com.package.SplashActivity"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

กิจกรรม:

public class SplashActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    //start StartActivity
    Intent intent = new Intent(this, StartActivity.class);
    startActivity(intent);
    finish();
}

}


9

หากคุณใช้Activityหน้าจอที่รวมอยู่แล้วคุณสามารถทำได้หากคุณใช้SherlockActionBar

getSupportActionBar().hide();

หลังจากหน้าจอเริ่มต้นคุณสามารถแสดงอีกครั้งด้วย ...

getSupportActionBar().show();

มันควรจะเหมือนกันกับ Native ActionBarของ Android


6

โซลูชัน @Clerics ทำงาน แต่สิ่งนี้ดูเหมือนว่าจะมีปัญหากับแอพพื้นฐานของ Google บางตัว: googles, play store, talk แอพขนาดใหญ่อื่น ๆ เช่น skype

แก้ไข : การแก้ปัญหาร้องได้ให้ฉันปัญหาสำหรับ actionbarsherlock ใน API <4.0 เหตุผลที่ setTheme ไม่ทำงานแซนด์วิชไอศครีมก่อน

เพิ่มสิ่งต่อไปนี้ในรายการของคุณภายในแอปพลิเคชันหรือแท็กกิจกรรม:

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

จากนั้นในกิจกรรมหลักของคุณ:

    // Set theme
    setTheme(R.style.YOUR_THEME);
    getSupportActionBar().setTitle(R.string.title);

    // Start regular onCreate()
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

6

ดีที่สุดและเรียบง่าย

requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);


6

ปี 2015 ใช้ไลบรารีสนับสนุน v7 พร้อมธีม AppCompat ตั้งค่าธีมนี้สำหรับกิจกรรมของคุณ

<style name="AppTheme.AppStyled" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimaryDark">@color/md_indigo_100</item>
    <item name="colorPrimary">@color/md_indigo_500</item>
    <item name="colorAccent">@color/md_red_500</item>
    <item name="android:textColorPrimary">@color/md_white_1000</item>
    <item name="android:textColor">@color/md_purple_500</item>
    <item name="android:textStyle">bold</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

4

สำหรับSplashscreenคุณควรใช้สายนี้manifestและไม่ใช้getActionBar()

<item name="android:windowActionBar">false</item>

และเมื่อ Splash Activityเสร็จสิ้นในการActivityใช้หลักด้านล่างหรือไม่มีอะไร

<item name="android:windowActionBar">true</item>

ใช้งานได้จริงถ้าคุณใช้ชุดรูปแบบที่แตกต่างกันสำหรับหน้าสแปลจากนั้นหน้าหลักของแอปพลิเคชันของคุณ เพียงใช้ android: theme = "@ style / mytheme" สำหรับทั้งกิจกรรมหลัก (หน้าจอเริ่มต้นของคุณ) และกิจกรรมแรกของแอปพลิเคชันของคุณที่ไม่ใช่หน้าจอเริ่มต้นที่เปลี่ยนธีม
ThanksMister

1
สิ่งนี้ทำให้เกิดข้อผิดพลาดที่ระดับ API ปัจจุบัน: "แอตทริบิวต์ไม่มีคำนำหน้า android namespace" <item android:name="android:windowActionBar">true</item>กำจัดข้อผิดพลาดนี้ แต่ฉันไม่รู้ว่ามันยังใช้งานได้อยู่
LarsH

3

ลองสิ่งนี้มันใช้งานได้สำหรับฉัน:

ด้านล่างกำจัดแถบหัวเรื่องของกิจกรรม

 requestWindowFeature(Window.FEATURE_NO_TITLE);

ด้านล่างจะกำจัดแถบการแจ้งเตือนเพื่อให้กิจกรรมดำเนินการเต็มหน้าจอ

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

(ตัวอย่างเต็มด้านล่าง) รับทราบ: วิธีการเหล่านี้ถูกเรียกก่อนที่เราจะกำหนดมุมมองเนื้อหาของกิจกรรมของเรา

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Sets Application to full screen by removing action bar
        requestWindowFeature(Window.FEATURE_NO_TITLE);    
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main); 

        // without this check, we would create a new fragment at each orientation change!
        if (null == savedInstanceState)
            createFragment();
    }

โปรดอธิบายว่าทำไมจึงใช้งานได้หรือเหตุใดคุณจึงคิดว่าควรใช้งานได้ เพียงแค่การวางโค้ดไม่ได้ทำให้ได้คำตอบที่สมบูรณ์
กริช

@ Chris, Oh ฉันเห็นสิ่งที่คุณหมายถึงขอบคุณ!
user3862873

3

สิ่งนี้อาจมีประโยชน์
เพิ่มในรายการของคุณ

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

ไชโย


ทำไมต้องโพสต์สิ่งที่ไม่ดีเท่าคำตอบยอดนิยมในคำถามเก่า ๆ
gsamaras

'คำตอบยอดนิยม' ไม่ช่วยฉันจึงพบว่าตัวเองมีคำตอบนี้และโพสต์ไว้ที่นี่
ralphgabb

2

วิธีที่ดีที่สุดที่ฉันพบหลังจากอ่านตัวเลือกทั้งหมดที่มีอยู่คือการตั้งค่าธีมหลักโดยไม่ต้องใช้ ActionBar จากนั้นตั้งค่า MyTheme เป็นรหัสในพาเรนต์ของกิจกรรมทั้งหมด

Manifest:

<application
...
        android:theme="@android:style/Theme.Holo.Light.NoActionBar"
...>

BaseActivity:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(R.style.GreenHoloTheme);
}

วิธีนี้ช่วยให้ฉันหลีกเลี่ยง ActionBar เมื่อแอปพลิเคชั่นเริ่มต้นขึ้น!


1

โซลูชันที่โพสต์แล้วมาพร้อมกับ sideffect ที่การเรียก. show () ครั้งแรกไม่ได้ทำให้ ActionBar เคลื่อนไหวสำหรับฉัน ฉันมีวิธีแก้ปัญหาที่ดีอีกข้อหนึ่งซึ่งได้แก้ไขว่า:

สร้าง drawable โปร่งใส - สิ่งเช่นนั้น:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
       android:color="#00000000" />
</shape>

ตั้งค่าพื้นหลัง actionbar จริง ๆ ให้เป็นมุมมองที่กำหนดเองที่มองไม่เห็นซึ่งคุณตั้งค่าไว้บน

getSupportActionBar().setCustomView(R.layout.actionbar_custom_layout);
      getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
              ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);

ตั้งพื้นหลังโปร่งใสสำหรับ actionbar ใน onCreate:

getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.background_transparent));

สิ่งสำคัญ: อย่าซ่อนแถบการกระทำทันทีใน onCreate แต่มีความล่าช้าเล็กน้อยในภายหลัง - เช่นเมื่อเค้าโครงเสร็จสิ้นด้วยการสร้าง:

getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    getSupportActionBar().hide();
                }
            });

ก่อนการโทร. show () ครั้งแรกของคุณให้ตั้งค่ามุมมองที่กำหนดเองที่มองเห็นได้:

_actionbarRoot.setVisibility(View.VISIBLE);
getSupportActionBar().show();

1

ในกรณีที่คุณมี null เพราะคุณกำลังใช้สนับสนุนห้องสมุดแทนการที่คุณต้องโทรgetActionBar()getSupportActionBar()


1

เพียงแค่เพิ่มสิ่งนี้ลงใน MainActivity ของคุณในฟังก์ชั่น onCreate

val actionBar = supportActionBar?.apply { hide() }

มันทำงานบน androidx เพียงเพิ่มหลังจากsetContentView ()แถวนี้supportActionBar?.apply { hide() }
Black_Zerg

0

วางหน้าจอstartActivityForResultเริ่มต้นของคุณในกิจกรรมแยกต่างหากและใช้จากonCreateวิธีการของกิจกรรมหลักเพื่อแสดง งานนี้เป็นเพราะตามเอกสาร:

เป็นกรณีพิเศษหากคุณเรียกใช้ startActivityForResult () พร้อมกับ requestCode> = 0 ในระหว่างการเริ่มต้น onCreate (บันเดิลที่บันทึกไว้InstanceState) / onResume () ของกิจกรรมของคุณจากนั้นหน้าต่างของคุณจะไม่ปรากฏขึ้นจนกว่าจะส่งคืนผลลัพธ์ . เพื่อหลีกเลี่ยงการกะพริบเมื่อมองไปที่กิจกรรมอื่น

คุณอาจจะทำเช่นนี้เฉพาะในกรณีที่การโต้แย้งที่จะonCreateมีnull(ระบุการเปิดตัวใหม่ของกิจกรรมของคุณเมื่อเทียบกับการเริ่มต้นใหม่เนื่องจากการเปลี่ยนแปลงการกำหนดค่า)


สิ่งนี้ใช้ไม่ได้ เมื่อ onCreate () เริ่มขึ้นแถบการกระทำจะปรากฏให้เห็นแล้ว เห็นได้อย่างชัดเจนในการดีบัก
Ilya Izhovkin

0

ฉันยังคงมีข้อผิดพลาดกับตัวชี้โมฆะและในที่สุดมันก็ช่วยได้เมื่อฉันเรียกใช้ getWindow () ก่อน requestFeature () แล้ว super.onCreate ()

public void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);
getActionBar().show();


0

ที่จริงแล้วคุณสามารถตั้งค่าเริ่มต้นActivityด้วยNoActionBar และตั้งค่าหลักของคุณactivityด้วยแถบการกระทำ


0

วิธีที่ดีที่สุดในการทำเช่นนี้คือทำให้กิจกรรมแรกเป็นกิจกรรมว่างและเนื้อหาที่คุณต้องการวางหลังจากนั้นบางครั้งก็เริ่มทำกิจกรรมอื่น โดยทำตามวิธีนี้คุณสามารถทำกิจกรรมแรกเป็นหน้าจอเริ่มต้นโดยไม่มีแถบการกระทำหรืออะไรก็ได้ นี่เป็นกิจกรรมแรกของฉัน

package com.superoriginal.rootashadnasim.syllabus;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class first_screen extends AppCompatActivity {



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first_screen);


    final Handler h=new Handler();
    h.postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent=new     Intent(getApplicationContext(),DrawerChooseBranchMainActivity.class);
            startActivity(intent);
        }
    },2000);

}
}

หลังจากนั้นคุณสามารถวางกิจกรรมใด ๆ ของคุณเป็นกิจกรรมแรกหากคุณไม่ต้องการแถบการกระทำในหน้าจอใด ๆ เพียงแค่เพิ่มสิ่งนี้ในสไตล์ของคุณ

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

0

Android studio จัดทำในเทมเพลตการสร้างสำหรับเต็มหน้าจอหากคุณใช้ Android studio คุณสามารถทำตามขั้นตอนด้านล่างเพื่อดำเนินการกิจกรรมเต็มหน้าจอ

ขั้นตอนแรกในการสร้างกิจกรรมใหม่

เลือกเลือกกิจกรรมเต็มหน้าจอ

เสร็จสิ้น Android studio ทำงานของคุณได้แล้วตอนนี้คุณสามารถตรวจสอบรหัสแบบเต็มหน้าจอได้


-1

นี่เป็นวิธีที่ดีที่สุดที่ฉันใช้ไปที่ไฟล์ java หลังจากonCreate:

@Override
    protected void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 

        // Take instance of Action Bar 
        // using getSupportActionBar and 
        // if it is not Null 
        // then call hide function 
        if (getSupportActionBar() != null) { 
            getSupportActionBar().hide(); 
        } 
    }

-3

ฉันรู้ว่าลิงค์โพสต์ไม่ใช่วิธีที่ดีที่สุดในการทำสิ่งต่าง ๆ แต่ฉันขอแนะนำให้คุณอ่านเอกสารต่อไปนี้จาก Google ด้วยตนเอง นี่คือเอกสาร Android อย่างเป็นทางการเกี่ยวกับวิธีการควบคุมระบบ UI ของคุณ (เช่น actionbar, nav bar เป็นต้น) น่าเสียดายที่ข้อมูลมีมากเกินกว่าจะโพสต์ได้โดยตรง แต่หลังจากอ่านแล้วคุณจะเข้าใจอย่างชัดเจนว่าจะแสดงและซ่อนคุณสมบัติอย่างไรไม่ว่าคุณจะพัฒนาเวอร์ชันอะไรมันง่ายมาก!

ในกรณีที่ลิงค์มีการเปลี่ยนแปลงสามารถพบได้ภายใต้เอกสาร Android อย่างเป็นทางการภายใต้การฝึกอบรม -> การเริ่มต้น -> แนวทางปฏิบัติที่ดีที่สุดสำหรับส่วนต่อประสานผู้ใช้ -> การจัดการระบบ UI

https://developer.android.com/training/system-ui/index.html

ป้อนคำอธิบายรูปภาพที่นี่


-4

คุณสามารถใช้สิ่งนี้:

getSupportActionBar().hide(); ถ้ามันไม่ทำงานลองอันนี้:

getActionBar().hide();

หากด้านบนใช้ไม่ได้ลองแบบนี้:

ในไดเรกทอรีของคุณ = res / values ​​/ style.xml ให้เปิด style.xml -> มีparentการเปลี่ยนแปลงคุณสมบัติเป็นparent="Theme.AppCompat.Light.DarkActionBar"

ถ้ามันไม่ทำงานเหมือนกัน ฉันไม่รู้อีกแล้ว แต่สำหรับฉันมันใช้งานได้


getSupportActionBar () ซ่อน (). ถูกกล่าวถึงในคำตอบที่โหวตมากที่สุด getActionBar (). hide (); ถูกกล่าวถึงในคำถามและ DarkActionBar ถูกกล่าวถึงในคำตอบของ Son Nguyen Thanh รวมทั้งคำถามนี้อายุ 4 ปีและมีคำตอบที่ได้รับการโหวตสูงหลายข้อแล้ว
augray
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.