简体   繁体   中英

TableRow having EditText doesn't show text until keyboard disappears

I am creating view dynamically at runtime via. code. Its a TableLayout tag created in xml layout file. And then in code i am adding Table Row with Spinner and EditText , two such rows. Issue is EditText that is added dosent show text typed until keyboard disappears. Tried many alternatives like Setting background with different color than text color, still it dosent work.

I would be thankful if someone can suggest solution for this. Here is source code to create dynamic layout.

    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);
}

使用代码动态创建的视图

You should set request focus on EditText

et2.requestFocus()

And also add in AndroidManifest.xml

android:windowSoftInputMode="adjustPan"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM