gpt4 book ai didi

java - 检测edittext android Pie中的语言类型?

转载 作者:行者123 更新时间:2023-12-02 09:54:15 25 4
gpt4 key购买 nike

我想检测用户在编辑文本中输入的语言,例如印地语或英语,因为我正在制作一个类似短信应用程序的应用程序,在这里我正在制作一个文本计数器,该计数器根据编辑文本语言类型工作,如果语言是英语计数器,则意味着该计数器显示 160 个字符或语言是印地语计数器显示 60 个字符。我可以在文本观察器的帮助下制作自定义计数器,但在这里我无法检测编辑文本的语言。

我尝试过:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String localeString = ims.getLocale();
Locale locale = new Locale(localeString);
String currentLanguage = locale.getDisplayLanguage();

但它在 Logcat 中没有给出任何内容。当我使用这个时。

Log.d(TAG, "messageTYPE: " + Locale.getDefault().getDisplayLanguage());

每次我输入印地语字符时,它只显示英语。

我想要什么?

如果我能够检测语言类型,那么我可以为编辑文本创建自定义计数器。

有没有办法让编辑文本像消息应用程序一样自动检测语言类型并根据语言设置计数器。

请帮助我,先谢谢了。

更新

if(s.length() < 160 || s.length() == 160){
if (s.length()/160 == 0) {
Log.d(TAG, "length160 " + s.length());
Log.d(TAG, "length160 " + (160-s.length()));
textViewCounter.setText((160 - s.length()) + "/" + "1");
messageCount =1;
Toast.makeText(SendingActivity.this, "length160: " + messageCount, Toast.LENGTH_SHORT).show();

}else if (s.length()/160 == 1){
textViewCounter.setText((160 - s.length()) + "/" + "1");
messageCount =1;
Toast.makeText(SendingActivity.this, "length1602: " + messageCount, Toast.LENGTH_SHORT).show();
}
}else if (s.length() > 160 && s.length() <= 305){
// textViewCounter.setText((305 - s.length()) + "/" + "2");
// messageCount = s.length()/160;
// Toast.makeText(SendingActivity.this, "above " + messageCount, Toast.LENGTH_SHORT).show();

if (s.length()/305 == 0) {
Log.d(TAG, "length305 " + s.length());
Log.d(TAG, "length305 " + (305-s.length()));
textViewCounter.setText((305 - s.length()) + "/" + "2");
messageCount = 2;
Toast.makeText(SendingActivity.this, "length305: " + messageCount, Toast.LENGTH_SHORT).show();

}else if (s.length()/305 == 1){
textViewCounter.setText((305 - s.length()) + "/" + "2");
messageCount = 2;
Toast.makeText(SendingActivity.this, "length3052: " + messageCount, Toast.LENGTH_SHORT).show();
}
}else if (s.length() > 305 && s.length() <= 459){
// textViewCounter.setText((305 - s.length()) + "/" + "2");
// messageCount = s.length()/160;
// Toast.makeText(SendingActivity.this, "above " + messageCount, Toast.LENGTH_SHORT).show();

if (s.length()/459 == 0) {
Log.d(TAG, "length459 " + s.length());
Log.d(TAG, "length459 " + (459-s.length()));
textViewCounter.setText((459 - s.length()) + "/" + "3");
messageCount = 3;
Toast.makeText(SendingActivity.this, "length459: " + messageCount, Toast.LENGTH_SHORT).show();

}else if (s.length()/305 == 1){
textViewCounter.setText((459 - s.length()) + "/" + "3");
messageCount = 3;
Toast.makeText(SendingActivity.this, "length4592: " + messageCount, Toast.LENGTH_SHORT).show();
}
}

这是用于计数单词和制作类似消息应用程序的自定义计数器。

最佳答案

使用 SmsMessage.calculateLength() (参见 docs )计算剩余字符数:

editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int[] result = SmsMessage.calculateLength(s, false);
textViewCounter.setText("" + result[2] + "/" + result[0]);
messageCount = result[0];
Log.i("TAG", "Characters: " + result[1] + "/" + (result[1] + result[2]));
Log.i("TAG", "Number of SMS's: " + result[0]);
}

@Override
public void afterTextChanged(Editable s) {

}
});

关于java - 检测edittext android Pie中的语言类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56112376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com