【问题标题】:Add gravity to EditText programmatically以编程方式将重力添加到 EditText
【发布时间】:2013-07-05 06:35:57
【问题描述】:

我尝试将 CENTER_VERTICAL 添加到 EditText:

((EditText)childView).setGravity( ((EditText)childView).getGravity() | Gravity.CENTER_VERTICAL);

我需要添加(但不改变!!!)任何其他当前的视图重力。

例如,EditText 已经有重力 LEFT。我试试

((EditText)childView).setGravity( Gravity.CENTER_VERTICAL);

但新的重力会杀死左重力。

添加新重力的最佳方法是什么?

【问题讨论】:

  • 不能加重力,只能设置一个
  • EditText 使用哪种布局?
  • 我使用父 TableLayout。我尝试了代码(见下文),但没有结果
  • 我们可以在这里给你 Code sn-p 吗?为了更好地理解。

标签: java android android-edittext gravity


【解决方案1】:

试试:

((EditText)childView).setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);

您一定知道初始重力集。

【讨论】:

    【解决方案2】:

    您可以通过在参数中设置重力来尝试重力

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    params.gravity = Gravity.CENTER_VERTICAL;
    
    ((EditText)childView).setLayoutParams(params);
    

    【讨论】:

    • 我试试这个。 'TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); layoutParams.gravity = layoutParams.gravity | Gravity.CENTER_VERTICAL; ((EditText)childView).setLayoutParams(layoutParams); '。但是这段代码破坏了以前的观点。
    【解决方案3】:

    当您以编程方式创建 EditText 时,您必须首先设置 setKeyListener(TextKeyListener.getInstance());

    否则您的视图将始终与 Gravity.TOP 对齐。

    我不知道真正的原因,但是在您为 EditText 指定任何其他参数之前,您必须设置 setKeyListener(TextKeyListener.getInstance());

    更正:仅当您通过扩展 EditText 并在 XML 中定义小部件来创建自定义小部件时,它才有效。仅在 Android 5.0.1 上测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多