【问题标题】:TableRow having EditText doesn't show text until keyboard disappears具有 EditText 的 TableRow 在键盘消失之前不显示文本
【发布时间】:2019-02-02 12:45:15
【问题描述】:

我在运行时通过动态创建视图。代码。它是在 xml 布局文件中创建的 TableLayout 标记。然后在代码中,我添加了带有SpinnerEditText 的表格行,两个这样的行。问题是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);
}

【问题讨论】:

  • 这意味着你的键盘隐藏了EditText 对吧?
  • 不,它没有隐藏 EditText。它在您按下键盘后显示键入的数据。 @PratikButani
  • android:windowSoftInputMode="adjustResize"
  • 我应该在哪里添加这个?
  • AndroidManifest.xml 中的Activity 标记中

标签: android android-studio android-layout android-fragments android-framelayout


【解决方案1】:

您应该将请求焦点设置在 EditText 上

et2.requestFocus()

并且还加入AndroidManifest.xml

android:windowSoftInputMode="adjustPan"

【讨论】:

  • 您找到解决方案了吗?
  • 我尝试按照您上面的建议进行更改,但最终结果没有更改。我仍在寻找解决方案。抱歉回复延迟,我没​​有收到来自 stackoverflow 的通知。
猜你喜欢
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 2013-08-23
  • 2021-01-27
  • 1970-01-01
  • 2014-10-05
  • 2012-12-15
相关资源
最近更新 更多