Trong AndroidManifest: Mong đợi android: screenOrientation = không được chỉ định


44

Studio Android 3.6.

Tôi muốn ứng dụng của tôi luôn ở portraitchế độ. Vì vậy, trong tôi AndroidMainfest.xml:

<activity
   android:name=".activity.SplashActivity"
   android:screenOrientation="portrait">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />

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

Tôi chạy ứng dụng và SplashActivityhiển thị trong portraitchế độ. Đẹp. Nhưng trình soạn thảo hiển thị lỗi sau:

Expecting android:screenOrientation="unspecified"

Tại sao?

Câu trả lời:


67

Trong thẻ kê khai của bạn (ngay bên dưới xmlns:android="http://schemas.android.com/apk/res/android"), đặt

xmlns:tools="http://schemas.android.com/tools"

Sau đó, bên trong thẻ ứng dụng, đặt

tools:ignore="LockedOrientationActivity"

hoặc nếu bạn đã có công cụ: bỏ qua trong thẻ ứng dụng thì hãy đặt thành công cụ: ign = "GoogleAppIndexingWarning, LockOrientationActivity"
Bí ẩn

20

nó chỉ ảnh hưởng đến Android Studio 3.6+

Vấn đề ở đây là gì? Sự cố này xảy ra do khung Android muốn người dùng tự điều khiển hướng ứng dụng, không nên hạn chế hướng ứng dụng của bạn, ví dụ nếu người dùng muốn sử dụng ứng dụng theo hướng ngang, anh ta chỉ cần lật thiết bị và cảm biến sẽ thực hiện công việc nhưng khi nhà phát triển hạn chế định hướng màn hình, ngay cả khi cảm biến xoay hoạt động, ứng dụng sẽ ở trạng thái được xác định trước, theo cách bạn đang hạn chế khả năng thiết bị của người dùng.

Làm gì bây giờ? Bạn có hai tùy chọn. Đầu tiên là bỏ qua lỗi vì nó sẽ không gây ra bất kỳ lỗi xây dựng nào ngay cả khi tôi đang làm như vậy và việc tạo apk / aab như bình thường Một tùy chọn khác là cung cấp Bố cục cảnh hoặc xử lý xoay vòng như trong một số các ứng dụng nhận biết nếu định hướng bị thay đổi, chúng sẽ nhắc người dùng thay đổi hướng vì ứng dụng không được hỗ trợ theo hướng đó

Nó có thể thay đổi trong tương lai => hiện tại nó không ảnh hưởng đến quá trình xây dựng của chúng tôi nhưng nó có thể thay đổi trong tương lai


9

Trong studio Android 3.6.0 tôi đoán họ muốn người dùng xử lý định hướng và khuyến khích nhà phát triển sử dụng công cụ ViewModel . Hãy để tôi giải thích chi tiết về màn hình

android:screenOrientation="portrait"

sẽ cung cấp cho bạn lỗi bạn phải chỉ định

android:screenOrientation="fullSensor" or android:screenOrientation="unspecified"

fullSensor Có nghĩa là bạn đã BẬT "Xoay" hoặc không, nó sẽ thay đổi hướng dựa trên việc bạn di chuyển điện thoại

Phương tiện không xác định nếu bạn BẬT tắt Xoay thì nó sẽ chỉ ở hướng đó và nếu không thì nó sẽ thay đổi hướng dựa trên việc bạn di chuyển điện thoại.


4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"

2
Bạn có thể vui lòng giải thích về việc sử dụng mã này là gì.
Raul

2

Tôi đã sử dụng các thủ tục dưới đây. Nó hoạt động hoàn hảo cho tôi. Trong Android studio 3.6.0 tôi nghĩ họ muốn người dùng xử lý định hướng và khuyến khích nhà phát triển sử dụng công cụ ViewModel. Sử dụng các thủ tục dưới đây để bỏ qua điều đó.

Đầu tiên Thêm:

xmlns:android="http://schemas.android.com/apk/res/android"

trong thẻ kê khai.

Thứ hai, Thêm

tools:ignore="LockedOrientationActivity" 

trong thẻ ứng dụng. Chúc mừng mã hóa.


1

Tôi tìm thấy 2 cách giải quyết vấn đề này

Đầu tiên,

Android Studio -> Preferences (or settings in Windows)
-> search "chrome" 
-> Uncheck "Activity is locked to an orientation" 
-> apply and ok 
-> Sync Project with Gradle flie

Thứ hai,

Select "Run" from the main menu 
-> Edit Configurations.
-> Launch options - Launch
-> select Nothing or Specified Activity
-> Sync Project with Gradle file

1

Thêm dòng sau android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Sau đó bấm Alt+Enter

nhập mô tả hình ảnh ở đây


0

Tôi đã phải đối mặt với vấn đề này, Trong yêu cầu của tôi, một số hoạt động sẽ hỗ trợ cả định hướng và phần còn lại sẽ được giữ nguyên, Trong trường hợp này, tôi đã giải quyết bằng các bước sau:

Trường hợp-1: - Để khóa Định hướng

Bước 1: Vui lòng thêm thẻ Ứng dụng dòng sau trong AndroidManifest.xml

công cụ: bỏ qua = "KhóaOrientationActivity"

<application
android:name=".activity.MyApplication"
tools:ignore="LockedOrientationActivity">

Bước 2: Nếu bạn muốn khóa hướng màn hình theo chiều dọc hoặc ngang, hãy thêm dòng sau vào thẻ hoạt động

android: screenOrientation = "Portrait" hoặc "phong cảnh"

Trường hợp-2: - Giả sử nếu bạn muốn cho phép định hướng trong hoạt động cụ thể và có thiết kế cụ thể cho cảnh quan

Bước 1: Xóa giá trị Định hướng trong cấu hình và loại bỏ hướng màn hình nếu nó tồn tại từ thẻ hoạt động và sử dụng đề xuất cá nhân của tôi (LifecyclObserver) trong Activity để không mất giá trị trong khi thay đổi hướng.

android: configChanges = "direction"
android: screenOrientation = "Portrait" hoặc "cảnh quan"

Đây là cách tôi giải quyết vấn đề này, hy vọng nó có ích, Cảm ơn & Mã hóa hạnh phúc.


0

Hãy thử giải pháp này:

AndroidMainfest:

<activity
    android:name="com.ui.activity.SplashActivity"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Hi vọng điêu nay co ich!


câu trả lời này không làm việc, trong android 3.6
Pedro Henrique

0

bạn có thể sử dụng mã này:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }

1
Vui lòng thêm một số lời giải thích cho câu trả lời của bạn để những người khác có thể học hỏi từ nó
Nico Haase

nếu chân dung định hướng khóa hướng của hoạt động đó. có nghĩa là định hướng không bao giờ thay đổi để cảnh quan.
Abu Baker Nawaz

Vui lòng chỉnh sửa câu trả lời của bạn để chứa tất cả lời giải thích
Nico Haase

-1

Hãy thử đặt các mục sau vào thẻ hoạt động

android:configChanges="orientation"
android:screenOrientation="portrait" 

Không giúp. Đó là chế độ
dọc và ngang

Đã cập nhật câu trả lời bạn sẽ phải thêm cả hai
Swayangjit

1
Nó không hoạt động trên Android Studio 3.6.
Evgen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.