12

Tôi cố gắng đạt tỷ lệ khung hình 16: 9 trên một chế độ xem với PercentRelativeLayout.Cách sử dụng layout_aspectRatio trong PercentRelativeLayout?

Vì vậy, tôi đã đưa dòng này trong tập tin build.gradle tôi: compile 'com.android.support:design:23.0.1'

tôi sử dụng bố trí này:

<android.support.percent.PercentRelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:layout_width="match_parent" 
     app:layout_aspectRatio="178%" 
     android:scaleType="centerCrop"/> 

</android.support.percent.PercentRelativeLayout> 

vấn đề:

  • Android Studio cảnh báo tôi với: 'layout_height' should be defined cho số ImageView.
  • Khi tôi chạy dự án của mình, tôi nhận được: Error:(15) No resource identifier found for attribute 'layout_aspectRatio'.

Vậy có vấn đề gì?

Trả lời

1

Bây giờ với cả PercentFrameLayout và PercentRelativeLayout không được chấp nhận trong 26.0.0, bạn có thể bắt đầu sử dụng ConstraintLayout.

Điều này blog article giải thích cách đạt tỷ lệ khung hình 16: 9 cho ImageView bằng cách sử dụng ConstraintLayout, nhưng có thể áp dụng cho bất kỳ chế độ xem nào.

13

Dường như bạn đang sử dụng sai sự phụ thuộc trong nỗ lực bao gồm Percent Support Library.

Các điều đúng (và phiên bản mới nhất) là:

com.android.support:percent:23.1.0 

Nói cách khác, phụ thuộc tuyên bố sẽ giống như thế này trong tập tin gradle của bạn:

compile 'com.android.support:percent:23.1.0' 
+0

Tôi phải làm gì nếu tôi đang xây dựng cho API22 ?? Tôi không thể sử dụng quyền 23.1.0? bao gồm cả 'com.android.support: support-v4: 22.2.0' và' com.android.support: percent: 22.2.0' cho tôi lỗi tương tự. – ShahiM

+2

@ShahiM: Tôi không hiểu tại sao bạn không thể sử dụng '23.1.0' với API22 - thực tế là tôi chắc chắn tôi đã tự làm như vậy. Như với appcompat, bạn có thể cần phải sử dụng các công cụ xây dựng phiên bản 23.0.0-23.0.2, nhưng điều đó không nên can thiệp vào targetSdkVersion của bạn. –

+0

cảm ơn mẹo. sẽ thử điều đó. – ShahiM

13

Với sự phụ thuộc chính xác bạn vẫn có cảnh báo

'layout_height' phải được xác định

Tôi đã sử dụng android: layout_height = "0dp" hoặc android: layout_width = "0dp" để tránh nó.

  <View 
      android:layout_height="0dp" 
      android:layout_width="0dp" 
      app:layout_aspectRatio="75%" 
      app:layout_widthPercent="100%" 
      /> 

bạn thậm chí có thể sử dụng android: layout_height = "wrap_content" trong trường hợp của nội dung sẽ lớn hơn rằng layout_aspectRatio

3

Có một g + bài ở đây: https://plus.google.com/+AndroidDevelopers/posts/ZQS29a5yroK giải thích làm thế nào để sử dụng này trong một số sâu .

Trong các nhận xét cũng có một cuộc thảo luận về cảnh báo layout_width/height. Bộ lọc Lint sẽ được thêm vào trong phiên bản Android Studio trong tương lai, nhưng cho đến lúc đó bạn có thể thêm <!-- suppress AndroidDomInspection --> để chặn cảnh báo hoặc bỏ qua nó.