请帮我解决这个奇怪的问题。我尝试实现EditText,用户可以在其中添加指向用户配置文件,主题标签等的链接。我有OnTextChanged方法,我从EditText获取当前文本,处理它并将其放回EditText。
@OnTextChanged(R.id.share_article_say_something)
public void onTextChanged() {
if (mIsTextChangedManually) {
mIsTextChangedManually = false;
return;
}
mIsTextChangedManually = true;
SpannableStringBuilder builder = mCommentsSpannable.format(mSaySomethingTv.getText().toString());
mSaySomethingTv.setTextKeepState(builder);
}
EditText看起来像那样
<com.slangwho.views.SWEditText
android:id="@+id/share_article_say_something"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left"
android:textColor="@color/black"
android:textColorHint="@color/my_friend_pressed_color"
android:background="@android:color/transparent"
android:textSize="@dimen/splash_screen_button_text_sp"
android:hint="@string/say_something"
android:layout_margin="10dp"
android:imeOptions="actionDone"
android:textCursorDrawable="@drawable/ed_cursor_drawable_black"
app:fontName="ProximaNova-Regular"/>
此EditText扩展常规EditText只是为了添加1个附加参数,即fontName。
答案 0 :(得分:0)
原来,这是三星滑动键盘的问题。当我使用EditText.setText()或EditText.setTextKeepState()将文本设置为编辑文本时,键盘建议表现得很奇怪。解决方案不是将文本设置为EditText,而是将TextWatcher设置为EditText,并在afterTextChanged(Editable s)方法中转换Editable。
public class SocialTextWatcher implements TextWatcher {
CommentsSpannable mCommentSpannable;
public SocialTextWatcher(CommentsSpannable commentsSpannable) {
mCommentSpannable = commentsSpannable;
}
@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) {
mCommentSpannable.formatEditable(s);
}
}