Tôi cũng không đề cập đến textInput. Ý tôi là khi bạn có văn bản tĩnh trong TextView (được điền từ lệnh gọi Cơ sở dữ liệu đến dữ liệu do người dùng nhập (có thể không được Viết hoa)), làm cách nào để đảm bảo chúng được viết hoa?
Cảm ơn!
Tôi cũng không đề cập đến textInput. Ý tôi là khi bạn có văn bản tĩnh trong TextView (được điền từ lệnh gọi Cơ sở dữ liệu đến dữ liệu do người dùng nhập (có thể không được Viết hoa)), làm cách nào để đảm bảo chúng được viết hoa?
Cảm ơn!
Câu trả lời:
Tôi có thể thực hiện điều này thông qua thao tác chuỗi java tiêu chuẩn, không có gì cụ thể cho Android hoặc TextView.
Cái gì đó như:
String upperString = myString.substring(0, 1).toUpperCase() + myString.substring(1).toLowerCase();
Mặc dù có lẽ có hàng triệu cách để thực hiện điều này. Xem tài liệu Chuỗi .
ĐÃ CHỈNH SỬA
Tôi đã thêm.toLowerCase()
Sau đây không áp dụng cho TextView, nhưng hoạt động với EditText; thậm chí sau đó, nó áp dụng cho văn bản được nhập từ bàn phím, không áp dụng cho văn bản được tải bằng setText (). Cụ thể hơn, nó sẽ bật Caps trên bàn phím và người dùng có thể ghi đè nó theo ý mình.
android:inputType="textCapSentences"
hoặc là
TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
Điều này sẽ viết hoa chữ cái đầu tiên.
hoặc là
compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)
tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));
đối với Kotlin, chỉ cần gọi
textview.text = string.capitalize()
Bạn có thể thêm Apache Commons Lang
trong Gradle nhưcompile 'org.apache.commons:commons-lang3:3.4'
Và sử dụng WordUtils.capitalizeFully(name)
Đối với những khách truy cập trong tương lai, bạn cũng có thể (IMHO tốt nhất) nhập WordUtil
từ đó Apache
và thêm nhiều phương pháp hữu ích vào ứng dụng của bạn, như capitalize
được hiển thị ở đây:
Đối với tôi không có tác dụng:
Chức năng:
private String getCapsSentences(String tagName) {
String[] splits = tagName.toLowerCase().split(" ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < splits.length; i++) {
String eachWord = splits[i];
if (i > 0 && eachWord.length() > 0) {
sb.append(" ");
}
String cap = eachWord.substring(0, 1).toUpperCase()
+ eachWord.substring(1);
sb.append(cap);
}
return sb.toString();
}
Kết quả:
I / P brain
O / P Não
I / P Brain and Health
O / P Brain And Health
I / P brain And health
đến O / P Brain And Health
I / P brain's Health
đến O / P Brain's Health
I / P brain's Health and leg
đến O / P Brain's Health And Leg
Hy vọng điều này sẽ giúp bạn.
Câu trả lời được chấp nhận là tốt, nhưng nếu bạn đang sử dụng nó để lấy các giá trị từ textView trong android, sẽ tốt hơn nếu bạn kiểm tra xem chuỗi có trống hay không. Nếu chuỗi trống, nó sẽ ném ra một ngoại lệ.
private String capitizeString(String name){
String captilizedString="";
if(!name.trim().equals("")){
captilizedString = name.substring(0,1).toUpperCase() + name.substring(1);
}
return captilizedString;
}
Vui lòng tạo TextView tùy chỉnh và sử dụng nó:
public class CustomTextView extends TextView {
public CapitalizedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setText(CharSequence text, BufferType type) {
if (text.length() > 0) {
text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length());
}
super.setText(text, type);
}
}
Ở đây tôi đã viết một bài viết chi tiết về chủ đề này, vì chúng tôi có một số tùy chọn, Viết hoa chữ cái đầu tiên của chuỗi trong Android
Phương pháp viết hoa chữ cái đầu tiên của chuỗi trong Java
public static String capitalizeString(String str) {
String retStr = str;
try { // We can face index out of bound exception if the string is null
retStr = str.substring(0, 1).toUpperCase() + str.substring(1);
}catch (Exception e){}
return retStr;
}
Phương pháp viết hoa chữ cái đầu tiên của chuỗi trong Kotlin
fun capitalizeString(str: String): String {
var retStr = str
try { // We can face index out of bound exception if the string is null
retStr = str.substring(0, 1).toUpperCase() + str.substring(1)
} catch (e: Exception) {
}
return retStr
}
Sử dụng thuộc tính XML
Hoặc bạn có thể đặt thuộc tính này trong TextView hoặc EditText trong XML
android:inputType="textCapSentences"