2012-02-03 26 views
28

Tôi có một TextView tôi sử dụng làm tiêu đề của trang trình đơn của tôi:Bao gồm một TextView và ghi đè lên các văn bản

<TextView 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Menu" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

Bây giờ tôi cần một TextView với cùng một màu sắc, kích thước và phong cách trên tất cả các trình đơn phụ trong tôi ứng dụng. Thay vì sao chép toàn bộ TextView vào mọi bố cục và chỉ thay đổi văn bản trong mỗi bố cục, tôi nghĩ tôi sẽ tạo một bố cục với TextView và bao gồm nó trong mọi chế độ xem phụ, chỉ ghi đè văn bản.

Mã của tôi trông như thế này:

/layout/menutextview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/default" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

bao gồm trong mỗi tập tin xml bố trí cố gắng để ghi đè các thuộc tính văn bản:

<include layout="@layout/menutextview" android:text="@string/menu" /> 

<include layout="@layout/menutextview" android:text="@string/settings" /> 

Nhưng văn bản mặc định được hiển thị ở mọi nơi. Bất cứ ai có một idéa của những gì vấn đề có thể được?

Kính trọng, Mattias

Trả lời

18

Chào mừng bạn đến với StackOverflow;)

Không được sử dụng tính năng "ghi đè" trẻ em. Nó không biết loại bố trí bạn sẽ bao gồm, nó sẽ chỉ thổi phồng nó và thêm nó vào bố trí hiện tại.

Để tự động thay đổi văn bản, bạn cần làm điều đó trong mã.

final TextView textView1 = (TextView) findViewById(R.id.menuTextView); 
textView1.setText(R.string.menu); 

final TextView textView2 = (TextView) findViewById(R.id.settingsTextView); 
textView2.setText(R.string.settings); 
+1

đây là giải pháp thân thiện và đơn giản nhất mà bạn có thể sử dụng cho vấn đề này. –

+1

Không có trường tùy chỉnh nào tôi có thể chuyển bất kỳ thứ gì tôi muốn từ xml vào mã không? Như thế này: Sau đó, trong mã tôi có thể đi ((TextView) findViewById (R.id.menuTextView)). SetText (getCustom ()); – Mattias

+1

Tôi muốn giống như bạn và theo tài liệu, bạn chỉ có thể ghi đè thuộc tính bố cục (và id). – viplezer

14

Hãy thử sử dụng phong cách và có TextView thực hiện theo phong cách đó. Điều này sẽ giúp bạn duy trì tính nhất quán trong Chế độ xem của mình dễ dàng hơn.

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