2013-10-14 15 views
39

Sto creando un TextView con un drawable al di sotto, in un GridLayout.TextView Android disegnabile, modifica padding tra disegnabile e testo?

Voglio portare il drawable al centro del TextView; Ho provato con setCompoundDrawablePadding(-75) e cambia solo la posizione del testo.

codice attuale:

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

Come posso impostare il testo e disegnabile alla metà del TextView?

risposta

86

È necessario combinare drawablePadding e padding per ottenere il risultato desiderato.

+0

Grazie! Aiuta. – user1648374

+0

come lo combinerai per un testo differente (ad esempio diverse localizzazioni)? – orium

0

È possibile utilizzare la lista dei livelli.

Prima:

enter image description here

Creare xml per la forma - 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> 

Dopo:

enter image description here

in XML, c'è qualcosa come android:right. È inoltre possibile aggiungere top, left, bottom. Ad esempio, puoi dare un esempio: riempimento sinistro e destro per disegnare senza ridimensionare l'altezza totale di textView.

4

In XML:

Android: drawablePadding = paddingValue

o

di programmazione:

TextView txt;

txt.setCompoundDrawablePadding (paddingValue)

Android: drawablePadding è il modo più semplice per dare imbottitura a icona drawable ma non si può dare specifica imbottitura da un lato come paddingRight o paddingLeft dell'icona drawable. Questo dà imbottitura su entrambi i lati del drawable.

0
<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` 
Problemi correlati