2016-09-05 1 views
0

Ich habe eine Verpflichtung wie folgt aus: Und ich schreibe die folgenden Codes:Wie zentrieren Sie den Text und das Symbol gleichzeitig in der Textansicht?

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/shape_rect_green_half_circle" 
    android:gravity="center" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="@string/health_consult_ordinary_doctor" 
     android:textColor="@color/white" 
     android:textSize="15.3dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="18dp" 
     android:text="2次" 
     android:textColor="@color/white" 
     android:textSize="15.3dp" /> 
</LinearLayout> 

Es läuft wie folgt aus:

Alles scheint gut zu funktionieren, aber wenn ich ein hinzufügen in der TextView zeichnend, wird es komisch. Wie folgt:

und die nachfolgenden Codes: (beachten Sie dies: die android:drawablePadding funktioniert nicht)

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/shape_rect_green_half_circle" 
    android:gravity="center" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:drawableLeft="@drawable/titlebar_consult_v6" 
     android:drawablePadding="10.7dp" 
     android:gravity="center" 
     android:text="@string/health_consult_ordinary_doctor" 
     android:textColor="@color/white" 
     android:textSize="15.3dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="18dp" 
     android:text="2次" 
     android:textColor="@color/white" 
     android:textSize="15.3dp" /> 
</LinearLayout> 

Die Frage ist also, wie der Text zum Zentrum und Symbol in der TextView zugleich. Ich weiß, diese Frage kann behoben werden, indem man ein ImageView und ein TextView in einem Layout schreibt, aber gibt es irgendwelche Lösungen? Ich habe lange im Netz gesucht, aber es ist zu nichts gekommen. Bitte helfen Sie oder versuchen Sie, einige Ideen dazu zu geben, wie Sie dies erreichen können.

EDITED: Ich habe festgestellt, dass: wenn ich die android:layout_width="wrap_content" in TextView, funktioniert es. Aber wenn ich android:layout_width="wrap_content" und android:layout_weight="1" einstelle, funktioniert es nicht. Kann mir jemand sagen warum?

+0

nehmen Sie die Auffüllung von textView – hackingforgirls

+0

@hackingforgirls meinst du die 'android: drawablePadding'? Ich sagte, es hat nicht funktioniert. :( – DysaniazzZ

+0

Ist Ihre Zeichnungsdatei '@ drawable/shape_rect_green_half_circle' eine .png Datei? – Sabeeh

Antwort

1

die Sie interessieren, ich habe noch eine LinearLayout hinzugefügt und stellen Sie Ihre TextView Inneren

<LinearLayout 
    android:background="@drawable/shape_rect_green_half_circle" 
    android:gravity="center" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:orientation="horizontal"> 

    <LinearLayout 
     android:gravity="center" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_width="0dp"> 

     <TextView 
      android:drawableLeft="@drawable/titlebar_consult_v6" 
      android:gravity="center" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:text="@string/health_consult_ordinary_doctor" 
      android:textColor="@color/white" 
      android:textSize="15.3dp" /> 
    </LinearLayout> 

    <TextView 
     android:layout_height="wrap_content" 
     android:layout_marginRight="18dp" 
     android:layout_width="wrap_content" 
     android:text="2次" 
     android:textColor="@color/white" 
     android:textSize="15.3dp" /> 
</LinearLayout> 
+0

Super Antwort! Es funktioniert, aber ich will wissen, warum es funktioniert, wenn die' android: layout_width = wrap_content "'? – DysaniazzZ

+0

@DysaniazzZ 'wrap_content' wird verwendet, um Breite zu bekommen Größe, die den Inhalt in view_ _wraps.Wann immer du willst, dass die Breite nach Inhalt gewachsen ist, benutze 'wrap_content' und wenn du' match_parent' verwendest, wird die Breite gleich der Breite des übergeordneten Layouts sein. – Nikhil

+0

@DysaniazzZ wenn du layout_weight = "1" machst, wird es übernommen vollständige Breite des übergeordneten Elements, da außer diesem kein anderes Layout im übergeordneten Layout vorhanden ist. Wenn Sie eine weitere Textansicht mit layout_weight = "1" hinzufügen, dann haben beide Textansichten die gleiche Breite und sie erhalten auch die volle Breite des Elternteils. – Nikhil

0
<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"> 

     <TextView 
      android:id="@+id/txt_swift" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="2次" 
      android:textColor="@android:color/white" 
      android:textSize="@dimen/_18dp" 
      android:drawableLeft="@drawable/titlebar_consult_v6" 
      android:drawablePadding="@dimen/_15dp" 
      android:gravity="center"/> 

    </LinearLayout> 

wie dies

0

hinzufügen Vielleicht ein SpannableString mit einem ähnlichen Ergebnis zu erzielen. Etwas wie folgt aus:

SpannableStringBuilder builder = new SpannableStringBuilder(text); 
Bitmap image = BitmapFactory.decodeResource(context.getResources(), drawableId); 
builder.setSpan(new ImageSpan(context, image, ImageSpan.ALIGN_BASELINE), 
       index , index+1, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
0

Bearbeiten Sie die Antwort ein: Aktivieren Sie diese Option: Es funktioniert gut

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/custom_button_primary" 
    android:layout_gravity="center" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 


    <TextView 
     android:id="@+id/tvView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:drawableLeft="@drawable/titlebar_consult_v6" 
     android:drawablePadding="10.7dp" 
     android:gravity="left" 
     android:layout_centerHorizontal="true" 
     android:text="@string/health_consult_ordinary_doctor" 
     android:textColor="@color/white" 
     android:textSize="15.3dp" 
     android:padding="10dp" 
     /> 

    <TextView 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="18dp" 
     android:text="2次" 
     android:textColor="@color/white" 
     android:textSize="15.3dp" 
     android:layout_centerVertical="true" 
     /> 
</RelativeLayout> 
+0

Danke, Bruder. Es funktioniert wirklich. Aber es ist nicht was ich will. Im ersten Bild hofft man, dass die erste "TextView" den Rest des übergeordneten Layouts übernehmen und den Inhalt darin zentrieren kann. In Ihren Codes erstellen Sie das erste "TextView" -Zentrum in seinem übergeordneten Layout. – DysaniazzZ

Verwandte Themen