2012-06-25 54 views
6

Tôi có một số ImageViewTextView. Tôi muốn đặt TextView bên dưới chế độ xem hình ảnh nhưng với phần giữa của TextView được căn chỉnh ở giữa của ImageView (dọc theo trục ngang). Nếu văn bản trong số TextView thay đổi đối với nội dung lớn hơn hoặc nhỏ hơn nhiều, phần giữa của văn bản luôn cần được căn chỉnh giữa phần giữa của ImageView. Điều này có thể xảy ra trong xml không?Android: Căn chỉnh một phần tử bên dưới và ở giữa một phần tử khác

+1

Giữa trung lưu. –

+1

Tôi nghĩ điều này được gọi là câu đố ở giữa! –

Trả lời

6

Có, bạn chỉ đơn giản là tìm cách để chứa cả yếu tố trong một dọc LinearLayout trong đó có android:gravity thiết lập để center_horizontal.

Something như thế này:

<?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> 

Bởi vì chiều rộng của TextViewwrap_content, thiết lập lực hấp dẫn của nó không phải là cần thiết. Tôi sẽ làm điều đó chỉ vì sự an toàn (và ngoài ra, tôi cũng có thể thiết lập chiều rộng là match_parent).

+0

Thật đáng xấu hổ vì tôi đã làm điều đó ở một nơi khác trong mã. Dù sao cũng cảm ơn bạn. – AndroidDev

+0

Vì vậy, nó hoạt động cho mục đích của bạn? Nếu đó là giải pháp, hãy xem xét đánh dấu nó là chính xác để những người khác có thể tìm thấy nó là tốt. – Eric

+0

Bạn không thể đánh dấu nó ngay lập tức. Bạn phải đợi vài phút. Bệnh nhân. Tôi hầu như luôn luôn đánh dấu chúng. – AndroidDev

0

đặt TextViewandroid:layout_width="fill_parent" và đặt android:gravity="center" trong TextView.

Tôi nghĩ nó giúp ích cho bạn.

Cảm ơn

0

Bạn có thể tận dụng RealtiveLayout như sau ..

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

Nếu bạn muốn TextView của mình là có dòng chỉ sau đó thêm các thuộc tính sau đây để TextView

android: ellipsezed = "kết thúc" android: singleLine = "true"

Sử dụng bố cục nhất định và thêm bố cục đó vào bất kỳ bố cục hiện có nào của bạn mà bạn nhận được kết quả tìm kiếm của bạn ..

Hy vọng giải thích này phù hợp với bạn ..

Các vấn đề liên quan