【问题标题】:How to change the width of an EditText object programmatically?如何以编程方式更改 EditText 对象的宽度?
【发布时间】:2018-05-09 10:23:49
【问题描述】:

我想以编程方式更改 EditText 对象的宽度,而不是之前使用 xml 创建视图。

public class TableFragment extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){
    View view = inflater.inflate(R.layout.fragment_table, container, false);

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int dHeight = displayMetrics.heightPixels;
    int dWidth = displayMetrics.widthPixels;

    TableLayout tableLayout = view.findViewById(R.id.tableLayout);
    EditText editTextSpieler1 = new EditText(getActivity());
    LayoutParams layoutparams = new LayoutParams(
            dWidth/4,
            WRAP_CONTENT);
    editTextSpieler1.setHint("Name");
    editTextSpieler1.setLayoutParams(layoutparams);
    tableLayout.addView(editTextSpieler1);

    return view;
}}

当使用 xml 创建 EditText 视图并使用 findViewById 设置创建对象时,宽度工作得很好。 然而,当我使用上面显示的代码启动应用程序时,EditText 对象的宽度是显示宽度的 100%。(而不是 25%)

提前致谢。

解决方案:

tableLayout.addView(editTextSpieler1);
editTextSpieler1.getLayoutParams().width=((int)dWidth/4);

在添加视图后更改视图的宽度。

【问题讨论】:

标签: java android


【解决方案1】:

你可以使用

editTextSpieler1.getLayoutParams().width=((int)dWidth/4);

editTextSpieler1.getLayoutParams().width=200;

【讨论】:

  • 相同的结果,仍然是 100% 宽度
  • 还是不行,会不会是Fragment导致了这些问题?
  • 这有帮助。对不起,我不明白在添加视图之前不能更改宽度:P
【解决方案2】:

尝试以下方法:

int width = 100;
int height = 50;
LayoutParams params = new LayoutParams(width, height);
EditText mEditText = new EditText(this);
mEditText.setLayoutParams(params);

【讨论】:

  • 高度改变了,但宽度没有改变,仍然是 100% 的显示宽度。我也不能使用“this”,因为这是一个片段。
  • 仔细检查宽度是否在 XML 中的某处硬编码
猜你喜欢
  • 2013-01-13
  • 2011-08-31
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多