2012-06-25 13 views
6

Mam ImageView i i . Chcę umieścić TextView poniżej widoku obrazu, ale ze środkiem TextView wyrównanym ze środkiem ImageView (wzdłuż osi poziomej). Jeśli tekst w polu TextView zmienia się w coś znacznie większego lub mniejszego, środek tekstu zawsze musi być wyrównany do środka obiektu ImageView. Czy to możliwe w xml?Android: Wyrównaj jeden element poniżej i pośrodku innego

+1

Środkowy środkowy środek. –

+1

Myślę, że to się nazywa środkowa zagadka! –

Odpowiedz

6

Tak, jesteś po prostu patrząc zawierać zarówno elementy w pionowym LinearLayout który ma android:gravity zestaw do center_horizontal.

tak:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" 
    ... > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ... /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     ... /> 

</LinearLayout> 

Ponieważ szerokość TextView jest to wrap_content ustawienie jej ciężar nie jest konieczna. Zrobiłbym to dla bezpieczeństwa (i dodatkowo mogę ustawić szerokość na match_parent).

+0

To krępujące, ponieważ robię to już w innym miejscu kodu. Dzięki i tak. – AndroidDev

+0

Czy to działa dla twojego celu? Jeśli jest to rozwiązanie, rozważ oznaczenie go jako poprawnego, aby inni mogli go również znaleźć. – Eric

+0

Nie można oznaczyć go od razu. Musisz poczekać kilka minut. Pacjenci. Niemal zawsze je oznaczam. – AndroidDev

0

zestaw TextViewandroid:layout_width="fill_parent" i ustaw android:gravity="center" w TextView.

Myślę, że to ci pomoże.

Dzięki

0

Można skorzystać z RealtiveLayout następująco ..

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" 
    ... > 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ... /> 

    <TextView 
     android:layout_below="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     /> 

</RelativeLayout> 

Jeśli chcesz, aby TextView się z jednej linii tylko wtedy dodać następujące właściwości TextView

androida: ellipsezed = "end" android: SingleLine = „true”

Użyj dany układ i dodać go do dowolnego istniejącego układu masz skutkować co szukasz ..

Mam nadzieję, że to wyjaśnienie zadziała dla Ciebie ..

Powiązane problemy