web-dev-qa-db-fra.com

Android TextView drawable, changez le remplissage entre drawable et texte?

Je crée une TextView avec un tirable dessous, dans une GridLayout

Je veux amener le drawable au milieu de la TextView; J'ai essayé avec setCompoundDrawablePadding(-75) et cela ne change que la position du texte.

Code actuel:

    TextView secondItem = new TextView(this);
    GridLayout.LayoutParams second = new GridLayout.LayoutParams(row2, col1);
    second.width = halfOfScreenWidth;
    second.height = (int) (quarterScreenWidth * 1.5);
    secondItem.setLayoutParams(second);
    secondItem.setBackgroundResource(R.color.MenuSecond);
    secondItem.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, R.drawable.ic_action_new);
    secondItem.setText("Text");
    secondItem.setCompoundDrawablePadding(-180);
    secondItem.setGravity(Gravity.CENTER);
    secondItem.setTextAppearance(this, Android.R.style.TextAppearance_Large_Inverse);
    gridLayout.addView(secondItem, second);

Comment puis-je définir le texte et dessiner au milieu de la TextView?

43
user1648374

Vous devrez associer drawablePadding et padding pour obtenir le résultat souhaité.

101
ssantos

En XML:

Android:drawablePadding = paddingValue

ou

Par programme:

TextView txt;

txt.setCompoundDrawablePadding(paddingValue)

Android: drawablePadding est le moyen le plus simple d’ajouter du rembourrage à l’icône dessinable, mais vous ne pouvez pas spécifier un remplissage latéral spécifique comme paddingRight ou paddingLeft de l’icône dessinable. Cela donne un rembourrage de chaque côté du dessinable.

9
Anubhav

Vous pouvez utiliser liste de couches.

Avant:

 enter image description here

Créez un fichier xml pour shape - shape_rectangle.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:right="5dp">
    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:shape="rectangle">
        <solid Android:color="@color/my_color" />
        <size
            Android:width="5dp"
            Android:height="5dp" />
    </shape>
</item>
</layer-list>

Après:

 enter image description here

En XML, il y a quelque chose comme Android:right. Vous pouvez également ajouter top, left, bottom. De cette façon, vous pouvez donner par exemple: un rembourrage à gauche et à droite pour dessiner sans redimensionner la hauteur totale de textView.

0
deadfish
  <Button
            Android:id="@+id/otherapps"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:background="@drawable/btn_background"
            Android:text="@string/other_apps"
            Android:layout_weight="1"
            Android:fontFamily="cursive"
            Android:layout_marginBottom="10dp"
            Android:drawableLeft="@drawable/ic_more"
            Android:paddingLeft="8dp" //for drawable padding to the left
            Android:textColor="@Android:color/holo_red_light" />`enter code here`
0