Tôi có thể ẩn thanh hành động trong tổ ong bằng mã này:
getActionBar().hide();
Nhưng khi bàn phím mở và người dùng sao chép bất cứ thứ gì, thanh hành động sẽ hiển thị lại. Làm thế nào tôi có thể vô hiệu hóa thanh hành động vĩnh viễn?
Tôi có thể ẩn thanh hành động trong tổ ong bằng mã này:
getActionBar().hide();
Nhưng khi bàn phím mở và người dùng sao chép bất cứ thứ gì, thanh hành động sẽ hiển thị lại. Làm thế nào tôi có thể vô hiệu hóa thanh hành động vĩnh viễn?
Câu trả lời:
Nếu bạn đang sử dụng Theme.Holo.Light
và muốn sử dụng Theme.Holo.Light.NoActionBar
biến thể trên các thiết bị trước 3.2, bạn có thể thêm biến thể này vào styles.xml
:
<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
và sau đó đặt nó làm chủ đề cho hoạt động của bạn:
<activity android:theme="@style/NoActionBar" ... />
<item name="android:windowFullscreen">true</item>
Bằng cách đặt chủ đề hoạt động trong Manifest,
<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>
ActionBar
, đối với tôi.
Tôi sử dụng đoạn mã sau trong hàm onCreate của mình:
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
Nguồn: https://developer.android.com/guide/topics/ui/actionbar.html
Với siêu lớp Activity được tạo mặc định của Android Studio ActionBarActivity
và sau đó, không có giải pháp nào trong các phản hồi khác hoạt động. Để giải quyết chỉ cần thay đổi siêu lớp:
public class xxxActivity extends ActionBarActivity{
đến:
public class xxxActivity extends Activity {
Nếu bạn muốn có được toàn màn hình mà không có ActionBar và Title.
Thêm nó vào 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>
và sử dụng kiểu tại manifest.xml.
android:theme="@style/AppTheme.NoActionBar"
Cách tốt nhất mà tôi tìm thấy mang đến chủ đề tùy chỉnh và không có thanh hành động, là tạo SuperClass cho tất cả các hoạt động trong dự án của tôi và trong đó gọi onCreate () gọi dòng mã sau -
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
Nó luôn làm việc cho tôi. Vấn đề duy nhất trong phương pháp này là, bạn sẽ thấy thanh hành động trong một phần giây khi khởi động ứng dụng (Không phải hoạt động, ứng dụng hoàn chỉnh).
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
getSupportActionBar().hide();
}
Chuyển đến tệp kiểu XML Thay đổi DarkActionBar này thành NoActionBar
style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Bạn có thể buộc ẩn thanh hành động một cách đơn giản:
ActionBar actionbar = getSupportActionBar();
actionBar.hide();
Chỉ cần sử dụng chủ đề mặc định của bạn.
Nếu bạn chỉ muốn một chủ đề không có thanh hành động, bạn có thể sử dụng biến thể 'NoActionBar', ví dụ: nếu chủ đề cơ bản của bạn là như dưới đây
<!-- 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>
sau đó bạn có thể sử dụng
<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>
Nhưng nếu bạn muốn giữ lại các thuộc tính của chủ đề chính của mình, ví dụ như AppTheme, bạn có thể làm như dưới đây
<style name="AppThemeNoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Bạn có thể giữ lại tất cả các thuộc tính của chủ đề cơ sở theo cách này và không phải thêm chúng một cách rõ ràng vào chủ đề NoActionBar của bạn :)
Đừng sử dụng chủ đề Holo và Actionbar sẽ biến mất. Mã này đang hoạt động với tôi trên API 8+, với hỗ trợ lib v7:
<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>
đặt chủ đề đó cho hoạt động của bạn:
<activity android:theme="@style/NoActionBar" ... />
và trong lớp hoạt động của bạn.
Nó hoạt động ngay cả khi nó mở rộng ActionBarActivity.
Trong độ phân giải -> giá trị -> style.xml
Thay đổi
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Đến
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Dưới đây là các bước để ẩn thanh hành động vĩnh viễn:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
.Bây giờ thay thế cha mẹ bằng bất kỳ chủ đề nào khác có chứa "NoActionBar" trong tên của nó.
a. Bạn cũng có thể kiểm tra giao diện của một chủ đề bằng cách chuyển sang tab thiết kế của Activity_main.xml và sau đó thử từng chủ đề được cung cấp trong danh sách thả xuống chủ đề của giao diện người dùng.
Nếu MainActivity của bạn mở rộng AppCompatActivity , hãy đảm bảo bạn sử dụng chủ đề AppCompat.
Nhập mã này vào onCreate
phương thức của bạn trước setContentView
:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
Tôi muốn đăng một cách tiếp cận Nhà thiết kế cho vấn đề này, điều này sẽ giữ cho thiết kế tách biệt với logic kinh doanh của bạn:
Bước 1. Tạo kiểu mới trong (res-> value-> Styles.xml): Về cơ bản, nó là bản sao của lược đồ tổng thể của bạn với cha mẹ khác nhau - 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>
Bước 2: Trong AndroidManifest.xml của bạn, hãy thêm chủ đề này vào hoạt động bạn muốn: vd: Tôi muốn hoạt động chính của mình không có thanh hành động, vì vậy hãy thêm điều này như dưới đây:
<activity android:name=".MainActivity"
android:theme="@style/MarkitTheme">
Đây là giải pháp tốt nhất cho tôi sau khi thử rất nhiều thứ.
Đảm bảo bạn tạo một chủ đề mới bằng cách thay đổi tên của chủ đề mặc định trong styles.xml
tệp thành:
<style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">
và thay đổi chủ đề từ trình đơn thả xuống bên dưới main_activity.xml
thành bất cứ điều gì bạn gọi là chủ đề của mình.
Một giải pháp thú vị khác mà bạn muốn giữ lại ViewPager trong khi xóa thanh hành động là tạo kiểu như hiển thị
<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>
Đây là cách mà hầu hết các ứng dụng Trình quay số trong Android đang hiển thị ViewPager mà không có thanh hành động.
Tham chiếu: https://github.com/CyanogenMod/android_packages_apps_Dialer
Sử dụng điều này trong styles.xml
tập tin:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
Tôi sử dụng giải pháp này:
trong bảng kê khai, bên trong thẻ hoạt động của bạn:
android:label="@string/empty_string"
và trong chuỗi XML:
<string name="empty_string">""</string>
Bằng cách này, bạn giữ ActionBar (hoặc Thanh công cụ) với tiêu đề, nhưng khi Hoạt động nếu được tạo, tiêu đề sẽ tự động trống.
Thật kỳ lạ, không ai trong số này hoạt động với tôi khi xây dựng trên Nexus 7 chạy 4.4.2 (API 19). Đối với hầu hết các phần, ít nhất là với phiên bản Android Studio mới nhất (1.2.1.1) sau khi tạo một ứng dụng hoạt động trống,:
android: theme = "@ style / AppTheme"
là trong phần tử ứng dụng, không phải là phần tử hoạt động. Nếu tôi xóa mã trên hoặc cố gắng thay đổi thành:
android: theme = "@ android: style / Theme.Holo.Light.NoActionBar"
ứng dụng sẽ không chạy ... nếu điều này xảy ra với bạn, chỉ cần truy cập vào tệp tệp style.xml của bạn (res> value> Styles.xml) và thêm .NoTitleBar vào cuối khối cha như khối này:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
Không cần thay đổi tệp AndroidManifest.
Trong của bạn activity_main.xml
, bạn có thể điều chỉnh từ đó trong dòng:
<?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"
.......
">
Đôi khi khi bạn có thể thấy những thứ như thế này Bấm vào đây , Bạn có thể chọn từ đây chủ đề "noActionBar".
Hy vọng tôi đã giúp bạn.