2016-08-16 16 views
0

この奇妙な問題を解決してください。私はユーザーがユーザープロファイル、ハッシュタグなどへのリンクを追加できるEditTextを実装しようとしています。私はEditTextから現在のテキストを取得し、それを処理してEditTextに戻すOnTextChangedメソッドを持っています。Spaceボタンをクリックすると、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は単なるたfontNameある1つの追加パラメータを追加する正規のEditTextを拡張するように見えます。

私は「スペース」を入力するとき、私は enter image description here

(カーソルが単一立って、「S」の後で)私が間違っているの提案を受け、いくつかのテキストを入力すると、私は受け取ります(最初の提案は、単一立っ「S」の後に追加されます) enter image description here

答えて

0

Samsung Swipe Keyboardに問題があることが判明しました。 EditText.setText()またはEditText.setTextKeepState()を使用してテキストを編集テキストに設定すると、キーボードの提案が異常な動作をします。解決策は、テキストをEditTextに設定するのではなく、TextWatcherをEditTextに設定し、afterTextChanged(Editable)メソッドで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); 
    } 
} 
関連する問題