7

Il y a une question How to make ConstraintLayout work with percentage values? et ses réponses montrent comment utiliser les pourcentages:Android - pourcentage ConstraintLayout utilisant dimens

<android.support.constraint.Guideline 
    android:id="@+id/guideline" 
    android:layout_width="1dp" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    app:layout_constraintGuide_percent="0.5"/> 

Mais si vous ne voulez pas coder en dur le pourcentage, mais utiliser une ressource dimen il ne travail.

<!-- inside the layout --> 

<android.support.constraint.Guideline 
    android:id="@+id/guideline" 
    android:layout_width="1dp" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    app:layout_constraintGuide_percent="@dimen/guideline_perc"/> 

<!-- inside dimens.xml --> 

<dimen name="guideline_perc>0.5</dimen> 

Vous obtenez l'erreur suivante:

Float types not allowed (at 'guideline_perc' with value 0.5).

Si vous remplacez la valeur avec 1, une erreur semblable est retourné:

Integer types not allowed (at 'guideline_perc' with value 1).

Comment définissez-vous une pourcentage sans codage en dur de la valeur dans la mise en page?

Répondre

7

Au lieu d'utiliser une ressource Dimen, utilisez une ressource autre de même type dimen:

<item name="guideline_perc" type="dimen">0.5</item>

Si vous utilisez des entiers, une ressource integer fonctionnerait mieux:

<integer name="guideline_perc">1</integer>

+1

Si cela fonctionne , alors c'est soit un bug IDE ou un bug d'outils de construction, car les deux approches résultent en une ressource de dimension. – CommonsWare

+1

La définition d'une ressource en tant que dimen nécessite une unité de mesure. Définir comme un élément avec le type «dimen» ne le fait pas. De plus, un format 'float' pourrait être ajouté mais ce n'est pas nécessaire. – neits

+0

Ah, je vois. Essayez d'utiliser une ressource 'float' ou' integer', plutôt que 'dimen'. – CommonsWare