2012-04-14 51 views
6

Tôi đang gặp vấn đề và tôi không biết, nguyên nhân gây ra nó. Tôi có Bố cục rất đơn giản như sau:TextView setGravity() không hoạt động trong java

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 
<TextView 
    android:id="@+id/my_text_view" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_gravity="NOTE_THIS" 
    android:textColor="#FFFFFF" 
    android:textSize="22dp" 
    android:text="TestText"/> 
</LinearLayout> 

được bao gồm trong bố cục khác. Nếu tôi thay đổi trọng lực bên trong xml, tôi thấy kết quả tương tự trong Layout-Editor và trên điện thoại của tôi. Nếu tôi muốn áp dụng Gravity theo chương trình như với myTextView.setGravity(Gravity.CENTER) thì nó không thay đổi gì cả. Và tôi không thể đặt LayoutGravity trong Java trên một TextView

Tôi sẽ cố gắng cho các mục đích gỡ lỗi để đưa chúng vào ba lần với một trọng lực khác hoạt động ngay cả. Vì vậy, tôi cho rằng mọi thứ đều ổn với Giao diện của tôi và có một lỗi hoặc một thứ khác mà tôi bỏ lỡ. Ai đó có thể cho tôi gợi ý những gì tôi cũng có thể thử hoặc nguyên nhân gây ra vấn đề này không?

Trả lời

24

Đặt chiều rộng của TextView của mình như android:layout_width="fill_parent" sau đó bạn có thể đặt nó lập trình sử dụng myTextView.setGravity(Gravity.CENTER)

+0

làm cách nào tôi có thể nhận được IntrinsicWidth của TextView sau khi đưa nó "fill_parent", bởi vì getWidth cho tôi chiều rộng của parent LienearLayout –

+0

tại sao bạn cần để thiết lập lực hấp dẫn chỉ? – waqaslam

+0

vì nó không chỉ hấp dẫn thiết lập, nhưng rezising văn bản, mà hoạt động nếu tôi nhận được chiều rộng chính xác của nó –

1

Khi bạn sử dụng LinearLayout như cha mẹ, sau đó layout_gravity đi kèm trong hình ảnh mà sắp xếp kiểm soát nhưng không phải nội dung bên trong sự kiểm soát như vậy, Thay vì sử dụng android:layout_gravity sử dụng android:gravity.

+0

Ah xin lỗi đó là lỗi của tôi ... Tôi muốn đặt LayoutGravity vì Gravity không có gì ... cập nhật Câu hỏi của tôi –

5

Bạn cần phải thiết lập mức độ nghiêm trọng của LayoutParams đối tượng thay vì View riêng của mình:

TextView tv = new TextView(getApplicationContext()); 
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT); 
lp.gravity = Gravity.CENTER; 
tv.setLayoutParams(lp); 
Các vấn đề liên quan