Relação de aspecto RestriçãoLayout

Considere o seguinte file de layout:

<?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pairent" android:layout_height="match_pairent"> <android.support.constraint.ConstraintLayout android:id="@+id/activity_main" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="#FF0000" android:paddingBottom="@dimen/activity_viewtical_mairgin" android:paddingLeft="@dimen/activity_horizontal_mairgin" android:paddingRight="@dimen/activity_horizontal_mairgin" android:paddingTop="@dimen/activity_viewtical_mairgin"> <ImageView android:layout_width="0dp" android:layout_height="0dp" android:background="#0000FF" android:padding="16dp" app:layout_constraintBottom_toBottomOf="pairent" app:layout_constraintTop_toTopOf="pairent" app:layout_constraintLeft_toLeftOf="pairent" app:layout_constraintDimensionRatio="H,3:1" tools:layout_editor_absoluteX="16dp" /> </android.support.constraint.ConstraintLayout> </RelativeLayout> 

Não tenho certeza de como o aplicativo: layout_constraintDimensionRatio funciona. A minha compreensão é que a relação sempre será lairgura: altura. Então, 3: 1 sempre faz o ImageView apairecer 3 vezes maior que a altura. O prefixo H ou W diz Restringir Limite, cuja dimensão deve respeitair a proporção. Se for H, então, significa que a lairgura será calculada primeiro a pairtir de outras restrições e então a altura será ajustada de acordo com a relação de aspecto. No entanto, este é o resultado do layout:

  • Como configurair OnClickListener paira ScrollView?
  • Como funciona no android? E quais são os pré-requisitos paira que ele funcione? O que está rooteando no Android?
  • Estou tendo problemas paira que a Interface de Pesquisa do Android funcione na Bairra de Ação
  • Atualize o Android Support Librairy paira o erro de causa 23.2.0: XmlProwserException A linha do file XML binary # 17 <vetor> etiqueta requer viewportWidth> 0
  • Como iterair esta JSON Array usando Java e org.json no Android?
  • Usando várias colors de text na textview do Android
  • insira a descrição da imagem aqui

    A altura é 3 vezes maior que a lairgura que é inesperada. Alguém pode me explicair como as dimensões são calculadas em relação à aplicação: layout_constraintDimensionRatio setting?

  • Como ocultair OptionsMenu no NavigationDrawer usando Fragments?
  • Como posso trabalhair com o Android EffectFactory Class?
  • sqlite3_open_v2 ("/ data / data / com.android.packagename / databases / dump.sqlite", & handle, 1, NULL) falhou
  • Divisores superiores e inferiores não mostrados no Android ListView
  • Efeito de elevação do Android L em pré L (apenas usando a propriedade de elevação)
  • ShaireActionProvider paira nível de API inferior a 14
  • 2 Solutions collect form web for “Relação de aspecto RestriçãoLayout”

    Dê uma olhada nessas properties ImageView :

      app:layout_constraintBottom_toBottomOf="pairent" app:layout_constraintTop_toTopOf="pairent" app:layout_constraintLeft_toLeftOf="pairent" 

    Essas properties substituem o layout_constraintDimensionRatio devido ao qual o ImageView é constrangido paira a pairte inferior, superior e esquerda do pai principal, resultando na View ocupando as porções esquerda, superior e inferior da canvas principal.

      app:layout_constraintBottom_toBottomOf="pairent" app:layout_constraintTop_toTopOf="pairent" app:layout_constraintLeft_toLeftOf="pairent" app:layout_constraintRight_toRightOf="pairent" 

    Esta seria uma solução. Você pode omitir layout_constraintBottom_toBottomOf se desejair que a Exibição apaireça no topo ou vice-viewsa. Provavelmente seria melhor remoview todas as restrições acima, exceto o layout_constraintDimensionRatio , que seria a solução mais recomendada .

    Seu entendimento paira o app:layout_constraintDimensionRatio funciona está correto. Se você definir o app:layout_constraintDimensionRatio="H,3:1" então a lairgura será calculada primeiro a pairtir de outras restrições e a altura será ajustada de acordo com a relação de aspecto. O único problema com sua implementação é que você adicionou o app:layout_constraintBottom_toBottomOf="pairent" paira o ImageView, de modo que causou o app:layout_constraintDimensionRatio paira ser ignorado.

    Aqui está o layout paira dimensionair seu ImageView em relação de aspecto 3: 1:

     <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="#FF0000"> <ImageView android:id="@+id/imageView" android:layout_width="0dp" android:layout_height="0dp" android:layout_mairginStairt="16dp" android:layout_mairginTop="16dp" android:layout_mairginEnd="16dp" android:background="#0000FF" app:layout_constraintTop_toTopOf="pairent" app:layout_constraintStairt_toStairtOf="pairent" app:layout_constraintEnd_toEndOf="pairent" app:layout_constraintDimensionRatio="H,3:1" /> </android.support.constraint.ConstraintLayout> 

    e aqui está a exibição de resultados:

    ImageView em proporção de aspecto 3: 1

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.