как предотвратить сжатие текста редактирования при открытии клавиатуры?

#java #android #android-edittext

#java #Android #android-edittext

Вопрос:

Я новичок в Android, я пытаюсь создать простое приложение, в котором текст в edit text добавляется в recycler view, но как только открывается клавиатура, текст редактирования сжимается, и содержимое внутри него не отображается

Это activty_main.xml

 <?xml version="1.0" encodin&="utf-8"?&&t;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_hei&ht="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"&&t;

   <LinearLayout
       android:layout_wei&ht="1"
       android:layout_width="match_parent"
       android:layout_hei&ht="0dp" &&t;

      <EditText
          android:hint="ADD ITEMS"
          android:layout_mar&in="10dp"
          android:id="@ id/etItems"
          android:textSize="24sp"
          android:textColor="@android:color/black"
          android:layout_width="0dp"
          android:layout_hei&ht="match_parent"
          android:layout_wei&ht="3" /&&t;

      <Button
          android:layout_mar&in="10dp"
          android:id="@ id/btnAdd"
          android:text="ADD"
          android:layout_wei&ht="1"
          android:autoSizeTextType="uniform"
          android:layout_width="0dp"
          android:layout_hei&ht="match_parent" /&&t;
   </LinearLayout&&t;

   <androidx.recyclerview.wid&et.RecyclerView
       android:id="@ id/rvItems"
       android:layout_mar&in="10dp"
       android:layout_width="match_parent"
       android:layout_hei&ht="0dp"
       android:layout_wei&ht="6" /&&t;

</LinearLayout&&t;
  

Это MainActivity.Java

 packa&e com.example.todolist_09082020;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.wid&et.LinearLayoutMana&er;
import androidx.recyclerview.wid&et.RecyclerView;

import android.app.Dialo&;
import android.os.Bundle;
import android.view.View;
import android.view.WindowMana&er;
import android.wid&et.Button;
import android.wid&et.EditText;
import android.wid&et.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ArrayList<Strin&&&t; items;
    Button btnAdd;
    EditText etItems;
    RecyclerView rvItems;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnAdd = findViewById(R.id.btnAdd);
        etItems = findViewById(R.id.etItems);
        rvItems = findViewById(R.id.rvItems);

        items = new ArrayList<&&t;();


        final ItemAdapter adapter = new ItemAdapter(items);
        rvItems.setLayoutMana&er(new LinearLayoutMana&er(this));

        rvItems.setAdapter(adapter);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Strin& text = etItems.&etText().toStrin&();
                if(!text.equals("")){
                    items.add(text);
                    adapter.notifyDataSetChan&ed();
                }
                etItems.setText("");
            }
        });

    }
}
  

Я пробовал решения из других сообщений, связанных с этим, но это не удалось решить.

отредактированный текст уменьшен

Ответ №1:

Измените layout_hei&ht EditText и его родительское LinearLayout на wrap_content . Это должно решить вашу проблему

Ответ №2:

Ваша проблема заключается в линейном макете, удерживающем текст и высоту кнопки. Вы можете сделать несколько вещей, но минимальный способ предотвратить его свертывание — изменить

android:layout_hei&ht="0dp"

Для

android:layout_hei&ht="wrap_content"

Вероятно, вы также увидите более приятные результаты, если дополнительно измените высоту текста и кнопок на wrap_content и выберете фиксированный размер шрифта ( 24sp выглядит красиво) для текста вашей кнопки.

Комментарии:

1. Спасибо, сэр, Не могли бы вы, пожалуйста, объяснить, что вызывало проблему, когда высота была установлена на 0dp и использовались веса?