我想在我的Android应用中制作一个音符功能。因此,每次在EditText字段中创建新行时,都会在其前面放置一个项目符号。
所以说我输入了:
您好
世界!
应该输出的是:
•你好
•世界!
目前我的代码正在输出:
•你好
•
世界!
这个想法很简单,执行让我感到不安!
有什么建议吗?
这是我的Java代码:
mNote.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) {
}
@Override
public void afterTextChanged(Editable s) {
String words = s.toString();
Integer mPrevWord = mNote.length() - 1;
Log.d(TAG, "beforeTextChanged: words "+ s);
if(words.length()==1){
words = String.format("• %s", s.toString());
mNote.setText(words);
mNote.setSelection(words.length());
}
}
});
mNote.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.d(TAG, "onEditorAction: v " + v);
Log.d(TAG, "onEditorAction:id " + actionId);
Log.d(TAG, "onEditorAction: event " + event);
Log.d(TAG, "onEditorAction: mNote input" + mNote);
String editorWords = String.format("%s %n • ", mNote.getText().toString());
Log.d(TAG, "onEditorAction: editwords: " + editorWords);
mNote.setText(editorWords);
mNote.setSelection(mNote.length());
return false;
}
});
和我的XML代码一样:
<!-- Note info -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/relLayout6"
android:layout_below="@id/relLayout4"
android:padding="10dp">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_note"
android:id="@+id/ivNote"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/ivNote"
android:inputType="textMultiLine|textAutoCorrect"
android:textSize="16sp"
android:textColor="@color/black"
android:id="@+id/etContacTNote"
android:layout_marginStart="20dp" />
</RelativeLayout>
答案 0 :(得分:0)
此字符具有编码,与所有带反斜杠的编码一样使用,因此找到它的ASCII字符并写入ASCII而不是原始值。
答案 1 :(得分:0)
图示出来! 完全删除了我的setOnEditor,因为它在使用android键盘时实际上没有注册回车键,只有我输入的物理键盘才能注册。
使用addTextChangedListener来比较要添加的新单词。 制作一个数组列表,如果该arraylist突然变成一个新行,则插入一个新的项目符号点。 这是代码!
public void afterTextChanged(Editable s) {
String words = s.toString();
Log.d(TAG, "beforeTextChanged: words "+ s);
List<String> myWordList = new ArrayList<String>();
myWordList.add(s.toString());
Log.d(TAG, "afterTextChanged: myWord " + myWordList);
char charWord = myWordList.toString().charAt(s.toString().length());
if(charWord == '\n' && mPreviousKeyStroke != KeyEvent.KEYCODE_DEL){
words = String.format("%s\u2022 ", s.toString());
mNote.setText(words);
mNote.setSelection(words.length());
}
if(words.length()==1 && mPreviousKeyStroke != KeyEvent.KEYCODE_DEL
&& !words.contains("\u2022")){
words = String.format("\u2022 %s", s.toString());
mNote.setText(words);
mNote.setSelection(words.length());
}
}
});