【问题标题】:dynamic EditText different size in different resolutions动态EditText不同大小不同分辨率
【发布时间】:2016-06-12 02:33:35
【问题描述】:
 for(int l=0;l<c.getCount();l++)
 {
     EditText etpob = new EditText(this.getActivity());
     etpob.setInputType(InputType.TYPE_CLASS_NUMBER);
     int po=Integer.parseInt("1" + c.getInt(3)) ;
     etpob.setId(po);
     etpob.setHint("POB");
     etpob.setText("");
     etpob.setTextSize(15);
     etpob.setVisibility(View.VISIBLE);
     etpob.setLayoutParams(new LinearLayout.LayoutParams(0, 50, 15));
     etpob.setGravity(Gravity.RIGHT);
}

我已经添加了上面的EditText dynamically是我的代码,但是对于不同类型的屏幕它的分辨率失败了,在使用样式的布局中我们可以改变它。

【问题讨论】:

    标签: java android


    【解决方案1】:

    您可以使用尺寸来设置动态生成的编辑文本的宽度

    int pixels = 15; // use dimen here 
    float scale = getContext().getResources().getDisplayMetrics().density;
    float dips = pixels / scale;
    

    所以,

     etpob.setLayoutParams(new LinearLayout.LayoutParams(0, pixels , pixels ));
    

    或者如果需要,您可以设置尺寸,然后您可以这样做

    getContext().getResources().getDimension(R.dimen.activity_horizo​​ntal_margin); //设置尺寸为所需分辨率的尺寸

    【讨论】:

    • 我有一个疑问,为什么你给float scale = getContext().getResources().getDisplayMetrics().density; float dips = pixels / scale;,因为你没有在任何地方使用
    • 这只是一个例子,我的意图只是在java文件中使用dimen
    【解决方案2】:

    你也可以这样做。

    在样式文件中定义参数并在代码中使用。

    查看以下链接以供参考

    How to retrieve style attributes programmatically from styles.xml

    【讨论】:

      【解决方案3】:

      如果您想在代码中使用静态整数作为 EditText 的大小,则必须使用不同大小的 values 文件夹。 在 res 文件夹中创建这些文件夹:values-small、values-normal、values-large、values-xlarge。 在这些文件夹中创建一个具有整数值的资源文件。如下所示

      <?xml version="1.0" encoding="utf-8"?>
      <resources>
          <integer name="edittext_width">70</integer>
          <integer name="edittext_height">30</integer>
      </resources>
      

      您可以在这些文件夹中设置具有相同名称但不同值的值。 那么,你必须在你的代码中使用它:

      etpob.setLayoutParams(new LinearLayout.LayoutParams(0,  getResources().getInteger(R.integer.edittext_width),  getResources().getInteger(R.integer.edittext_height)));
      

      祝你好运。

      【讨论】:

        【解决方案4】:

        如果editText需要match_parent

         Point size = new Point();
         getWindowManager().getDefaultDisplay().getSize(size);
         width = size.x;
        

        并将宽度设置为 EditText

         editText.setWidth(width);
        

        【讨论】:

          【解决方案5】:
          etpob.setLayoutParams(new LinearLayout.LayoutParams(0, ConvertPixels(50), ConvertPixels(15))); 
          
          public int  ConvertPixels(int ht)
              {
                  int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,ht, getActivity().getResources().getDisplayMetrics());
                  return height;
              }
          

          使用了名为 TypedValue.applyDimensions(int, float, DisplayMetrics) 的现有实用程序方法

          【讨论】:

            猜你喜欢
            • 2012-09-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多