2014-10-24 43 views
25

Thay đổi đơn giản nhất mà tôi có thể thực hiện cho Hoạt động trống mới, như được tạo bởi phiên bản Android Studio mới nhất, để ứng dụng xuất hiện toàn màn hình là gì?Android: tạo ứng dụng toàn màn hình

Tôi muốn tạo ứng dụng Android toàn màn hình. Tôi đang làm việc với Android Studio. This post gợi ý rằng tôi thêm một dòng như ...

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

... đến tập tin AndroidManifest.xml, như hình dưới đây:

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.lexogram.james.blackslate" > 

      <application 
        android:allowBackup="true" 
        android:icon="@drawable/ic_launcher" 
        android:label="@string/app_name" 
        android:theme="@style/AppTheme" > 
        <activity 
          android:name="com.lexogram.james.blackslate.MainActivity" 
          android:label="@string/app_name" 
          android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"> 
          <intent-filter> 
            <action android:name="android.intent.action.MAIN" /> 

            <category android:name="android.intent.category.LAUNCHER" /> 
          </intent-filter> 
        </activity> 
      </application> 

    </manifest> 

Khi tôi làm điều này, ứng dụng biên dịch nhưng nó bị treo khi khởi chạy. Nếu tôi xóa dòng, ứng dụng chạy tốt, nhưng với thanh tác vụ và thanh tiêu đề, cũng như được ghi nhận bởi người dùng khác.

Đây là nỗ lực đầu tiên của tôi khi tạo ứng dụng Android, vì vậy ứng dụng của tôi hầu như không bị thay đổi so với ví dụ Hello World ban đầu.

EDIT: Tôi đã tạo một dự án mới và chỉ thực hiện một thay đổi này cho dự án. Dưới đây là một đoạn trích từ nhật ký lỗi:

FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lexogram.james.test/com.lexogram.james.test.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)... 

LƯU Ý: Tôi đang thử nghiệm trên một tuổi Samsung SGH-T499Y, chạy Android 2.2 (Froyo)

+0

lỗi gì bạn nhận được khi treo ứng dụng? Kiểm tra đầu ra LogCat trong Android Studio (lỗi lỗi luôn bắt đầu bằng FATAL và có màu đỏ). – Squeazer

+0

Bạn đang sử dụng bất kỳ thứ gì từ chủ đề tùy chỉnh (một số thuộc tính có thể) sẽ không có sẵn trong chủ đề mặc định toàn màn hình? Chế độ xem của bạn có hiển thị nếu bạn chọn chủ đề đó trên màn hình xem xét hay không (tôi đang sử dụng Eclipse để không biết tương đương trong Android Studio). Nhật ký của bạn sẽ cho bạn biết điều gì đang xảy ra và lỗi chính xác là gì nhưng đối với tôi, đây thường là vấn đề khi thay đổi chủ đề cho các hoạt động. – kha

+1

Bạn có gọi 'getActionBar()' khi bạn sử dụng chủ đề Holo.Light.NoActionBar? Nó trả về null, nếu bạn 'setTitle (" ")' hoặc một cái gì đó như thế nó sẽ là 'NullPointerException'. – Phonbopit

Trả lời

56

Bạn đang nhận được vấn đề này bởi vì các hoạt động bạn đang cố gắng áp dụng các ActionBarActivity android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"> để được mở rộng yêu cầu áp dụng chủ đề AppCompat.

Mở rộng hoạt động của bạn từ Activity hơn là từ ActionBarActivity

Bạn có thể phải thay đổi lớp Java của bạn cho phù chút.

Nếu bạn muốn loại bỏ thanh trạng thái quá sau đó sử dụng này trước khi setContentView(layout) trong onCreateView phương pháp

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

Bạn phải mở rộng lớp hoạt động của mình từ ActionBarActivity, thay đổi thành Hoạt động. ActionBarActivity không thể chuyển sang chế độ toàn màn hình. – Rohit5k2

+0

Đầu tiên tôi gặp lỗi sau khi thực hiện thay đổi này, nhưng sau đó tôi nhận ra rằng nó cũng yêu cầu tôi thay thế nhập android.support.v7.app.ActionBarActivity bằng nhập android.app.Activity và bây giờ tôi không thấy Thanh tác vụ, nhưng Thanh trạng thái vẫn còn hiện diện, vì vậy ứng dụng vẫn không hoàn toàn toàn màn hình. –

+0

Xem câu trả lời đã chỉnh sửa của tôi để xóa thanh trạng thái – Rohit5k2

6

trong trường hợp của tôi tất cả hoạt động tốt. Xem trong logcat. Có lẽ logcat hiển thị một cái gì đó có thể giúp bạn giải quyết vấn đề của bạn

Dù sao bạn có thể thử làm điều đó cách lập trình:

public class ActivityName extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      // remove title 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
      setContentView(R.layout.main); 
     } 
} 
2

Trong onCreate gọi

requestWindowFeature(Window.FEATURE_NO_TITLE); // for hiding title 

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

chỉ làm điều này trong file manifest của bạn trong thẻ hoạt động của bạn

android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
6

Cập nhật trả lời tôi thêm android:windowIsTranslucent trong trường hợp bạn có màn hình trắng ở đầu hoạt động

chỉ cần tạo mới Phong cách trong giá trị/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <!-- to hide white screen in start of window --> 
    <item name="android:windowIsTranslucent">true</item> 
    </style> 

</resources> 

từ AndroidManifest của bạn.xml thêm phong cách cho hoạt động của bạn

android:theme="@style/AppTheme"

là như thế này

<activity android:name=".Splash" 
      android:theme="@style/AppTheme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
0

Gần đây tôi đã có vấn đề chính xác cùng và hưởng lợi từ các bài sau đây cũng (ngoài giải pháp Rohit5k2 của trên):

https://bsgconsultancy.wordpress.com/2015/09/13/convert-any-website-into-android-application-by-using-android-studio/

Trong Bước 3, MainActivity kéo dài Activity thay vì ActionBarActivity (như Rohit5k2 đã đề cập). Đặt các phần tử chủ đề NoTitleBarFullscreen vào đúng vị trí trong tệp AndroidManifest.xml cũng rất quan trọng (hãy xem Bước 4).

11

Chỉ cần thêm thuộc tính sau đến chủ đề hiện tại của bạn:

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

Ví dụ:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/orange</item> 
    <item name="colorPrimaryDark">@android:color/holo_orange_dark</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
</style> 
Các vấn đề liên quan