12

Próbuję uzyskać współczynnik proporcji 16: 9 w widoku z PercentRelativeLayout.Jak korzystać z layout_aspectRatio w PercentRelativeLayout?

Więc mam umieścić ten wiersz w moim pliku build.gradle: compile 'com.android.support:design:23.0.1'

Używam tego układu:

<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> 

problemy:

  • Android Studio ostrzec mnie: 'layout_height' should be defined dla ImageView.
  • Po uruchomieniu projektu otrzymałem: Error:(15) No resource identifier found for attribute 'layout_aspectRatio'.

Co jest nie tak?

Odpowiedz

1

Teraz, gdy zarówno PercentFrameLayout, jak i PercentRelativeLayout są przestarzałe w wersji 26.0.0, można rozpocząć korzystanie z ConstraintLayout.

Ten wyjaśnia, jak uzyskać współczynnik proporcji 16: 9 dla ImageView za pomocą ConstraintLayout, ale można go zastosować do dowolnego widoku.

13

Wygląda na to, że używasz niewłaściwej zależności, próbując dołączyć Percent Support Library.

poprawna (a najnowsza wersja) jest:

com.android.support:percent:23.1.0 

Innymi słowy, deklarowana zależność powinna wyglądać w Gradle pliku:

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

Co mam zrobić, jeśli buduję dla API22 ?? Nie mogę korzystać z 23.1.0, prawda? w tym 'com.android.support: support-v4: 22.2.0' oraz' com.android.support: percentage: 22.2.0' daje mi ten sam błąd. – ShahiM

+2

@ShahiM: Nie rozumiem, dlaczego nie można użyć '23.1.0' z API22 - w rzeczywistości jestem prawie pewien, że zrobiłem to sam. Podobnie jak w przypadku appcompat, prawdopodobnie musisz użyć narzędzi do budowania wersji 23.0.0-23.0.2, ale to nie powinno kolidować z twoją wersją targetSdkVersion. –

+0

dzięki za cynk. spróbuję to. – ShahiM

13

Przy prawidłowym uzależnienia wciąż miał ostrzec

'layout_height' powinno być zdefiniowane

Użyłem Androida: layout_height = "0dp" lub android: layout_width = "0dp", aby tego uniknąć.

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

można nawet użyć androida: layout_height = „wrap_content” w przypadku treści będzie większy, że layout_aspectRatio

3

Jest g + post tutaj: https://plus.google.com/+AndroidDevelopers/posts/ZQS29a5yroK, który wyjaśnia, jak korzystać z tego w pewnej głębokości .

W komentarzach jest również dyskusja na temat ostrzeżenia o wysokości układu/wysokości. Filtr Lint zostanie dodany w przyszłej wersji Android Studio, ale do tego czasu możesz dodać <!-- suppress AndroidDomInspection -->, aby wyłączyć ostrzeżenie lub po prostu go zignorować.