2
 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);
}

I have added the EditText dynamically above is my code, But it resolution fails out for different types of screen,in layout using styles we can change it out.

Michaël Azevedo
  • 3,874
  • 7
  • 31
  • 45
Rashmi S
  • 267
  • 1
  • 7
  • 20

5 Answers5

1

You can use dimension for setting width of dynamic generated edittext

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

So,

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

or if it is require you can set dimen and than you can do it like this way

getContext().getResources().getDimension(R.dimen.activity_horizontal_margin); //set size of dimen in required resolution

Ajay Pandya
  • 2,417
  • 4
  • 29
  • 65
  • I have a doubt,why you given `float scale = getContext().getResources().getDisplayMetrics().density; float dips = pixels / scale;` because your not using anywhere – Rashmi S Feb 29 '16 at 13:54
  • this is just an example for this my intention is just to use dimen in java file – Ajay Pandya Mar 01 '16 at 04:02
0

You can do the same way.

Define the parameters in style files and use it in code.

Check below link for reference

How to retrieve style attributes programmatically from styles.xml

Community
  • 1
  • 1
sanky jain
  • 873
  • 1
  • 6
  • 14
0

Incase the editText needs to match_parent

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

And set width to EditText

 editText.setWidth(width);
Dhinakaran Thennarasu
  • 3,336
  • 4
  • 26
  • 39
0

if you want to use an static integer in your code for size of your EditText, must use values folder in different sizes. create in res folder these folders: values-small, values-normal,values-large,values-xlarge. in these folder make a resources file with Integer values. like below

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

you can set this values with same name but different values in these folders. then, you must use it in your code:

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

GOOD LUCK.

Haniyeh Khaksar
  • 774
  • 4
  • 20
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;
    }

Used existing utility method built called TypedValue.applyDimensions(int, float, DisplayMetrics)

Rashmi S
  • 267
  • 1
  • 7
  • 20