Android - getHeight() and getWidth()
11,488
to get the size of the screen you can try:
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
Look this: Get screen dimensions in pixels
Author by
Allan Macmillan
Computing Science and Mathematics graduate from The University Of Glasgow. Experience using Solr, Nutch, Java, Android, Hadoop, C and more
Updated on June 04, 2022Comments
-
Allan Macmillan almost 2 years
I am dynamically creating some ImageViews inside a relativeLayout but I need the size to vary depending on the height and width of the screen. At the point where I set the height the views and layouts havent been created which means that the
getHeight()
andgetWidth()
are returning 0. I have looked at other threads on StackOverflow but none seem specific enough to my problem.I am doing all this in a Fragment and would appreciate any guidance on how to solve this. Her is a small snippet of my code.
@Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ View v = inflater.inflate(R.layout.fragment_hello_moon, parent, false); RelativeLayout rl = (RelativeLayout) v.findViewById(R.id.l1); tl.setBackgroundColor(Color.RED); ArrayList<ImageView> imgViews = new ArrayList<ImageView>(); //Cant get height or width of parent as hasnt been created yet int numberOfBells = 16; int height = rl.getHeight() / numberOfBells; int width = rl.getWidth() / 2; final ImageView imageTopL = new ImageView(getActivity()); if (true){ imageTopL.setId(1); imageTopL.setImageResource(R.drawable.bell_dl_256); RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); params1.addRule(RelativeLayout.ALIGN_PARENT_TOP); params1.addRule(RelativeLayout.ALIGN_PARENT_LEFT); params1.setMargins(50,10,0,10); imageTopL.setLayoutParams(params1); //Need the size to vary depending on the height/width imageTopL.getLayoutParams().height = height; imageTopL.getLayoutParams().width = width; imageTopL.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { imageTopL.setImageResource(R.drawable.bell_ul_256); } }); imgViews.add(imageTopL); } for(ImageView i : imgViews){ rl.addView(i); } return v; }