EditText автоматически перейти к следующей строке с набирающим словом, как WhatsApp EditText - PullRequest
0 голосов
/ 07 мая 2018

EditText

<android.support.v7.widget.AppCompatEditText
            android:id="@+id/itemEditText_id"
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:layout_marginTop="8dp"
            android:layout_marginStart="2dp"
            android:layout_marginEnd="4dp"
            android:lines="2"
            android:scrollHorizontally="false"
            android:maxLength="69"
            android:scrollbars="vertical"
            android:background="@drawable/round_border_edit_text"
            android:hint="Go ahead \nSend messge"
            android:inputType="textMultiLine|textLongMessage"
            android:textAppearance="@style/TextAppearance.AppCompat.Body2"
            android:maxLines="2"
            android:minLines="1"
            />

это мой xml-код, если что-то здесь нужно добавить или удалить, пожалуйста, сообщите.

Java-код, который я использую для достижения того, что я хочу, как WhatsApp's editText, но он работает не очень хорошо

final AppCompatEditText editText = holder.itemEditText;

        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {



                // if edittext has 10chars & this is not called yet, add new line
                if(editText.getText().length() == 34 && !isReached) {

                    editText.append("\n");
                    isReached = true;

                }
                // if edittext has less than 10chars & boolean has changed, reset
                if(editText.getText().length() < 34 && isReached) isReached = false;

                Log.d("char", "onTextChanged: "+charSequence);
                Log.d("i", "onTextChanged: "+i);
                Log.d("i1", "onTextChanged: "+i1);
                Log.d("i2", "onTextChanged: "+i2);

            }

            @Override
            public void afterTextChanged(Editable editable) {


            }
        });

    }

этот код не работает так, как я хочу, или вы можете сказать, что я не могу кодировать так, как я хочу, чтобы editText действовал.

я хочу, чтобы мой editText работал подобно редактируемому тексту Whatsapp, когда я набираю что-то, и он достигает значка внутри editText, курсор переходит на новую строку с набираемым словом. В моем editText слова идут под кнопкой ImageButton, которую я использую в качестве значка отправки. Я не хочу, чтобы слова шли под значком отправки. Пожалуйста, помогите.

ImageButton

 <android.support.v7.widget.AppCompatImageButton
            android:id="@+id/itemSendButton_id"
            android:layout_width="25dp"
            android:layout_height="20dp"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_marginEnd="11dp"
            android:background="@color/colorFacebookBtnText"
            android:clickable="true"
            android:focusable="true"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_send" />

Я новичок в программировании, поэтому, пожалуйста, помогите мне и спасибо заранее.

1 Ответ

0 голосов

Используйте это

et1.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start,int before, int count) 
{
    // TODO Auto-generated method stub
    if(et1.getText().toString().length()==size)     //size as per your requirement
    {
        et2.requestFocus();
    }
}
public void beforeTextChanged(CharSequence s, int start,
                int count, int after) {
            // TODO Auto-generated method stub

}

public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
}

});
...