La fonction Android View.setPadding(int left, int top, int right, int bottom)
n'accepte que les valeurs en px mais je souhaite définir un remplissage dans dp. Y a-t-il un moyen de contourner cela?
android
android-layout
Sharj
la source
la source
getResources()
c'est une fonction héritée par une activité, mais j'essaie d'utiliser ces lignes dans un adaptateur de listview personnalisé. Puis-je faire cela si je ne peux pas appelergetResources()
?Si vous définissez la dimension (en dp ou autre) dans un fichier XML (ce qui est mieux de toute façon, du moins dans la plupart des cas), vous pouvez en obtenir la valeur en pixels en utilisant ce code:
la source
Il existe un meilleur moyen de convertir la valeur en dp par programme:
Appliquez ensuite
dpValue
à votre méthode, par exemple:setPadding(dpValue,dpValue,dpValue,dpValue);
la source
Vous pouvez calculer les pixels pour une valeur PPP spécifique: http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31
la source
J'ai le même problème. La seule solution que j'ai trouvée (cela ne vous aidera pas vraiment :)) est de le définir dans le fichier Xml.
Si vous pouvez obtenir la densité à partir du code, vous pouvez utiliser la conversion: "La conversion des unités de creux en pixels d'écran est simple: pixels = creux * (densité / 160)." (à partir de http://developer.android.com/guide/practices/screens_support.html )
Edit: vous pouvez obtenir la densité de l'écran: http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi
la source