ฉันสามารถซ่อนแถบการกระทำในรวงผึ้งโดยใช้รหัสนี้:
getActionBar().hide();
แต่เมื่อแป้นพิมพ์เปิดขึ้นและผู้ใช้คัดลอกสิ่งใด ๆ แถบการกระทำจะแสดงอีกครั้ง ฉันจะปิดการใช้งานแถบการกระทำอย่างถาวรได้อย่างไร
ฉันสามารถซ่อนแถบการกระทำในรวงผึ้งโดยใช้รหัสนี้:
getActionBar().hide();
แต่เมื่อแป้นพิมพ์เปิดขึ้นและผู้ใช้คัดลอกสิ่งใด ๆ แถบการกระทำจะแสดงอีกครั้ง ฉันจะปิดการใช้งานแถบการกระทำอย่างถาวรได้อย่างไร
คำตอบ:
หากคุณกำลังใช้Theme.Holo.Light
และต้องการใช้Theme.Holo.Light.NoActionBar
ตัวแปรในอุปกรณ์ 3.2 ล่วงหน้าคุณสามารถเพิ่มสิ่งนี้ในstyles.xml
:
<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
จากนั้นตั้งเป็นธีมของกิจกรรมของคุณ:
<activity android:theme="@style/NoActionBar" ... />
<item name="android:windowFullscreen">true</item>
โดยการตั้งค่าธีมกิจกรรมใน Manifest
<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>
ActionBar
สำหรับฉัน
ฉันใช้รหัสต่อไปนี้ภายในฟังก์ชั่น onCreate ของฉัน:
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
ที่มา: https://developer.android.com/guide/topics/ui/actionbar.html
<application
.
.
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
. >
บางทีนี่อาจช่วยคุณได้
ด้วยกิจกรรม Superclass ที่สร้างจาก Android Studio ที่เป็นค่าเริ่มต้นคือActionBarActivity
แล้วจึงไม่มีวิธีแก้ปัญหาในการตอบสนองอื่น ๆ ในการแก้ปัญหาเพียงแค่เปลี่ยน superclass:
public class xxxActivity extends ActionBarActivity{
ถึง:
public class xxxActivity extends Activity {
หากคุณต้องการแสดงเต็มหน้าจอโดยไม่มีการกระทำแถบและชื่อเรื่อง
เพิ่มใน style.xml
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
และใช้สไตล์ที่ manifest.xml
android:theme="@style/AppTheme.NoActionBar"
วิธีที่ดีที่สุดที่ฉันพบซึ่งให้ธีมที่กำหนดเองและไม่มีแถบการกระทำคือการสร้าง SuperClass สำหรับกิจกรรมทั้งหมดในโครงการของฉันและใน onCreate () โทรไปที่บรรทัดของรหัสต่อไปนี้ -
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
มันใช้ได้ผลเสมอสำหรับฉัน ปัญหาเดียวในวิธีนี้คือคุณจะเห็นแถบการกระทำเป็นเสี้ยววินาทีเมื่อเริ่มต้นแอป (ไม่ใช่แอพที่เป็นแอพที่สมบูรณ์)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
getSupportActionBar().hide();
}
ไปที่ styles.xml เปลี่ยน DarkActionBar เป็นNoActionBar
style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
คุณสามารถบังคับซ่อนแถบการกระทำได้ง่ายๆ:
ActionBar actionbar = getSupportActionBar();
actionBar.hide();
เพียงแค่ใช้ชุดรูปแบบเริ่มต้นของคุณ
หากคุณต้องการชุดรูปแบบที่ไม่มีแถบการกระทำคุณสามารถใช้ตัวแปร 'NoActionBar' เช่น หากชุดรูปแบบฐานของคุณเป็นด้านล่าง
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
จากนั้นคุณสามารถใช้
<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
แต่ถ้าคุณต้องการที่จะรักษาคุณสมบัติของชุดรูปแบบหลักของคุณเช่น AppTheme คุณสามารถทำดังต่อไปนี้
<style name="AppThemeNoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
คุณสามารถรักษาคุณสมบัติทั้งหมดของชุดรูปแบบพื้นฐานของคุณด้วยวิธีนี้และไม่จำเป็นต้องเพิ่มไว้ในชุดรูปแบบ NoActionBar ของคุณ :)
อย่าใช้ธีม Holo และ Actionbar จะหายไป รหัสนี้ใช้งานได้กับฉันใน API 8+ พร้อมด้วยการสนับสนุน lib v7:
<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>
กำหนดธีมนั้นสำหรับกิจกรรมของคุณ:
<activity android:theme="@style/NoActionBar" ... />
และในชั้นเรียนกิจกรรมของคุณ
มันทำงานได้แม้ในตอนที่ขยาย ActionBarActivity
ภายใต้res -> values -> styles.xml
เปลี่ยนแปลง
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
ถึง
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
นี่เป็นวิธีแก้ปัญหาอย่างรวดเร็ว
คุณค้นหา styles.xml และเปลี่ยนธีมแอปพลิเคชันพื้นฐานเป็น "Theme.AppCompat.NoActionBar" ดังที่แสดงด้านล่าง
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
</style>
ด้านล่างนี้เป็นขั้นตอนในการซ่อนแถบการกระทำอย่างถาวร:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
ควรมีลักษณะคล้ายกับตอนนี้แทนที่พาเรนต์ด้วยชุดรูปแบบอื่น ๆ ที่มี "NoActionBar" ในชื่อ
คุณยังสามารถตรวจสอบลักษณะที่ปรากฏของธีมโดยสลับไปที่แท็บออกแบบของ activity_main.xml จากนั้นลองใช้แต่ละธีมที่มีให้ในรายการดรอปดาวน์ธีมของ UI
หากMainActivityของคุณขยายAppCompatActivityตรวจสอบให้แน่ใจว่าคุณใช้ธีม AppCompat
พิมพ์รหัสนี้เป็นonCreate
วิธีการของคุณก่อนsetContentView
:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
ฉันต้องการโพสต์เป็นแนวทางการออกแบบสิ่งนี้จะแยกการออกแบบออกจากตรรกะทางธุรกิจของคุณ:
ขั้นตอนที่ 1 สร้างสไตล์ใหม่ใน (res-> values-> styles.xml): โดยทั่วไปแล้วจะเป็นสำเนาของชุดรูปแบบโดยรวมของคุณกับพาเรนต์อื่น - parent = "Theme.AppCompat.Light.NoActionBar"
<!-- custom application theme. -->
<style name="MarkitTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
</style>
ขั้นตอนที่ 2: ใน AndroidManifest.xml ของคุณเพิ่มชุดรูปแบบนี้ไปยังกิจกรรมที่คุณต้องการ: เช่นฉันต้องการกิจกรรมหลักของฉันโดยไม่มีแถบการกระทำเพื่อเพิ่มเช่นนี้ด้านล่าง:
<activity android:name=".MainActivity"
android:theme="@style/MarkitTheme">
นี่เป็นทางออกที่ดีที่สุดสำหรับฉันหลังจากลองสิ่งต่างๆมากมาย
ในฟังก์ชั่น onCreate เพิ่มรหัสต่อไปนี้
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
และเพียงนำเข้า android.support.v7.app.ActionBar
ตรวจสอบให้แน่ใจว่าคุณสร้างธีมใหม่โดยเปลี่ยนชื่อของธีมเริ่มต้นในstyles.xml
ไฟล์เป็น:
<style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">
และกว่าเปลี่ยนธีมจากรายการแบบหล่นลงใต้ของคุณmain_activity.xml
เป็นสิ่งที่คุณเรียกว่าธีมของคุณ
โซลูชันที่น่าสนใจอีกประการหนึ่งที่คุณต้องการเก็บ ViewPager ไว้ในขณะที่ลบแถบการกระทำคือมีสไตล์ตามที่แสดง
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/NoActionBarStyle</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
<item name="android:backgroundSplit">@null</item>
<item name="android:displayOptions"></item>
</style>
นี่เป็นวิธีที่แอปพลิเคชั่น Dialer ส่วนใหญ่ใน android แสดง ViewPager โดยไม่มีแถบแอ็คชัน
Ref: https://github.com/CyanogenMod/android_packages_apps_Dialer
ลองสิ่งนี้ในรายการของคุณ
<activity
android:name=".MainActivity"
android:theme="@android:style/Theme.Holo.NoActionBar"
android:label="@string/app_name" >
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}
setContentView(R.layout.activity_main);
มีสองวิธีในการปิดการใช้งานActionBar
ใน Android
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
ใช้สิ่งนี้ในstyles.xml
ไฟล์:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
ฉันใช้วิธีนี้:
ในรายการภายในแท็กกิจกรรมของคุณ:
android:label="@string/empty_string"
และใน strings.xml:
<string name="empty_string">""</string>
วิธีนี้ทำให้คุณคงไว้กับแถบเครื่องมือ ActionBar (หรือแถบเครื่องมือ) แต่เมื่อกิจกรรมหากสร้างชื่อจะว่างเปล่าโดยอัตโนมัติ
น่าประหลาดใจที่ไม่มีสิ่งใดที่เหมาะกับฉันเมื่อสร้างบน Nexus 7 ที่ใช้ 4.4.2 (API 19) ส่วนใหญ่อย่างน้อยกับ Android Studio เวอร์ชันล่าสุด (1.2.1.1) หลังจากสร้างแอปกิจกรรมว่างเปล่าแล้ว:
หุ่นยนต์: ชุดรูปแบบ = "@ สไตล์ / AppTheme"
อยู่ในองค์ประกอบของแอปพลิเคชันไม่ใช่องค์ประกอบของกิจกรรม หากฉันลบรหัสข้างต้นหรือพยายามเปลี่ยนเป็น:
หุ่นยนต์: ชุดรูปแบบ = "@ หุ่นยนต์: แบบ / Theme.Holo.Light.NoActionBar"
แอปจะไม่ทำงาน ... หากสิ่งนี้เกิดขึ้นกับคุณเพียงไปที่ไฟล์ styles.xml ของคุณ (res> values> styles.xml) และเพิ่ม. NoTitleBar ไปยังจุดสิ้นสุดของพาเรนต์เช่นบล็อกนี้:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
ไม่จำเป็นต้องทำการเปลี่ยนแปลงไฟล์ AndroidManifest
ในของactivity_main.xml
คุณคุณสามารถปรับจากที่นั่นในบรรทัด:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
android:theme="@style/Theme.Design.Light.NoActionBar"
.......
">
บางครั้งเมื่อคุณเห็นสิ่งต่าง ๆ เช่นนี้คลิกที่นี่คุณสามารถเลือกธีม "noActionBar" ได้จากที่นี่
หวังว่าฉันช่วยคุณ