TableRow с EditText не показывает текст, пока клавиатура не исчезнет - PullRequest
0 голосов
/ 02 февраля 2019

Я создаю представление динамически во время выполнения через.код.Это тег TableLayout, созданный в файле макета xml.И затем в коде я добавляю строку таблицы с Spinner и EditText, двумя такими строками.Ошибка EditText, которая добавляется до тех пор, пока текст не будет напечатан до исчезновения клавиатуры.Перепробовал много вариантов, таких как Установка фона с другим цветом, нежели цвет текста, но это не помогло.

Буду благодарен, если кто-то может предложить решение для этого.Вот исходный код для создания динамического макета.

    private void createRowRange() {

    cnt++;
    listCnt.add(cnt + "");

    final TableRow row = new TableRow(getActivity());

    String one = String.valueOf(cnt) + "1";
    String two = String.valueOf(cnt) + "2";
    String three = String.valueOf(cnt) + "3";
    String four = String.valueOf(cnt) + "4";

    ImageView imgRem = new ImageView(getActivity());
    imgRem.setId(cnt);
    row.setId(generateViewId());

    row.addView(imgRem);

    final TableRow row1 = new TableRow(getActivity());

    final Spinner spinnerEquipment = new Spinner(getActivity());
    spinnerEquipment.setId(Integer.parseInt(one));
    spinnerEquipment.setMinimumWidth(400);

    ArrayList<String> array = new ArrayList<>();
    array.add(getString(R.string.select_price_per));
    array.add("Distance (Km)");
    array.add("Hour");

    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, array);

    spinnerEquipment.setAdapter(adapter);

    final EditText et1 = new EditText(getActivity());
    et1.setHint("Price");
    et1.setWidth(300);
    et1.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorBlack));
    et1.setInputType(InputType.TYPE_CLASS_NUMBER);
    et1.setPadding(15, 15, 15, 15);
    et1.setId(Integer.parseInt(two));
    et1.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.input_outline));

    row1.addView(spinnerEquipment);
    row1.addView(et1);


    final TableRow row2 = new TableRow(getActivity());

    final Spinner spinnerEquipment2 = new Spinner(getActivity());
    spinnerEquipment2.setId(Integer.parseInt(three));
    spinnerEquipment.setMinimumWidth(400);

    final ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, equipmentArray);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerEquipment2.setAdapter(adapter2);

    final EditText et2 = new EditText(getActivity());
    et2.setHint("Fixed Price");
    et2.setWidth(300);

    et2.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorBlack));
    et2.setInputType(InputType.TYPE_CLASS_NUMBER);
    et2.setPadding(15, 15, 15, 15);
    et2.setId(Integer.parseInt(four));

    et2.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.input_outline));

    row2.addView(spinnerEquipment2);
    row2.addView(et2);

    imgRem.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.mipmap.ic_minus));

    imgRem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            tableRange.removeView(row);
            tableRange.removeView(row1);
            tableRange.removeView(row2);
            Log.d(TAG, "Count :: " + v.getId() + "");
            listCnt.remove(v.getId() + "");

            for (String i : listCnt)
                Log.d(TAG, i + "");
        }
    });

    tableRange.addView(row);
    tableRange.addView(row2);
    tableRange.addView(row1);
}

View created dynamically using code

1 Ответ

0 голосов
/ 11 февраля 2019

Вы должны установить фокус запроса на EditText

et2.requestFocus()

, а также добавить в AndroidManifest.xml

android:windowSoftInputMode="adjustPan"
...