2011-09-27 45 views
7

Tôi có một TextView. Tôi đang cố viết hoa chữ cái đầu tiên trong mỗi từ.android: viết hoa không hoạt động

Đây là TextView:

<TextView 
      android:text="TextView" 
      android:id="@+id/textView1" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:textSize="30dip" 
      android:textStyle="bold" 
      android:layout_marginRight="5dip" 
      android:ellipsize="end" 
      android:capitalize="words"> 
     </TextView> 

Đây là cách tôi đang bổ sung thêm nội dung:

TextView titleView = (TextView) findViewById(R.id.textView1); 
    titleView.setText(section.replace("_", " ")); 

Tôi có thể không thêm văn bản tự động và mong đợi nó để tận dụng những lời? Một đặc tính khác có gây trở ngại cho android:capitalize không? android:capitalize có bị hỏng không?

Cảm ơn câu trả lời của bạn.

Trả lời

13

capitalize về cơ bản chỉ là một KeyListener mà bạn có thể đặt trong XML, do đó, nó chỉ áp dụng cho nhập văn bản của người dùng. As the documentation states (tôi nhấn mạnh):

Nếu được đặt, xác định rằng TextView này có một phương thức nhập liệu văn bản và cần tự động viết hoa những gì mà người dùng.

Có câu hỏi liên quan về how to capitalize the first letter of every word in Java có một số câu trả lời hữu ích.

+0

Wow, gần như cùng một câu trả lời chính xác ... –

+0

Cảm ơn, tôi đã đánh dấu bạn là câu trả lời đúng. – emachine

1

Đây là một câu trả lời cuối nhưng tôi nghĩ rằng có thể giúp ai đó ...

Nếu bạn cảm thấy thoải mái với capitilizing các văn bản động trong các mã java sau đó bạn có thể sử dụng:

textView.setText(text.toUpperCase()); 
-1

android: viết hoa bị phản đối trên ICS, vì vậy tôi đoán nó sẽ được tốt hơn để làm điều đó trong mã (tức là với String.toUpperCase())

thử khác có thể được

android:inputType="textCapWords" 

nhưng tôi đoán nó sẽ yêu cầu EditText hoạt động.

Tôi không biết đây có phải là lý do cho mã của bạn hay không, bạn đang nhắm mục tiêu phiên bản?

13

Nếu bạn đang nhắm mục tiêu API Level 14 trở lên, bạn nên sử dụng

android: textAllCaps = "true"

Nếu không, bạn sẽ phải thực hiện hành vi này chính mình.

+0

Cảm ơn bạn. Bây giờ tôi biết lý do tại sao tôi không thể làm điều này để làm việc trên API Cấp 8. :) –

0

@ Câu trả lời của Shine là chính xác Tôi không biết tại sao nó lại bị bỏ phiếu. android: viết hoa được tán thành trong API 3. Đáng tiếc là các tài liệu TextView không biết điều này, bằng chứng là chôn trong R.attr:

R.attr

Android studio cũng không thông báo cho bạn rằng thuộc tính này bị phản đối. 30 phút nữa tôi sẽ không bao giờ quay lại, cảm ơn google!

0

android:capitalize hiện không còn được dùng nữa.

Thay vì sử dụng android:capitalize="words", bạn nên cân nhắc sử dụng android:inputType="textCapWords".

Tùy thuộc vào nhu cầu của bạn, bạn cũng có thể sử dụng nhiều giá trị, chẳng hạn như android:inputType="textCapWords|textPersonName".

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