动态EditText在不同分辨率下的大小不同

时间:2016-02-29 06:13:08

标签: java android

Use of unresolved identifier 'myUser'

我已添加 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); } 以上是我的代码,但它的分辨率因不同类型的屏幕而失败,在使用样式的布局中我们可以将其更改。

5 个答案:

答案 0 :(得分:1)

您可以使用尺寸来设置动态生成的edittext的宽度

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)。; //设置所需分辨率的尺寸大小

答案 1 :(得分:0)

你也可以这样做。

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

请查看以下链接以供参考

How to retrieve style attributes programmatically from styles.xml

答案 2 :(得分:0)

将editText包含在match_parent

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

并将宽度设置为EditText

 editText.setWidth(width);

答案 3 :(得分:0)

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

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

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

{{1}}

好运。

答案 4 :(得分:0)

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)