Intereting Posts

Android RelativeLayout изменяет высоту программно

Я пытаюсь изменить размер макета программно. У меня две кнопки. В одной кнопке я меняю положение макета, а вторая кнопка пытаюсь получить позицию сохранения, ведь я был в первый раз.

<RelativeLayout android:id="@+id/popaplayout" android:layout_width="fill_parent" android:layout_height="200dp" > 

Это мой макет, и в первой кнопке я написал

 RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT); parms.addRule(RelativeLayout.BELOW, R.id.movies_title_layout); scrollpopap.setLayoutParams(parms); scrollpopap.setScrollingEnabled(true); 

И вторая кнопка

 RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, 300); rel_btn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); scrollpopap.setLayoutParams(rel_btn); scrollpopap.setScrollingEnabled(false); 

В xml файле я написал высоту 200dp и программно 300, и есть разная высота. Как я могу написать сохранение высоты в программном отношении?

Если кто-нибудь знает решение, пожалуйста, помогите мне спасибо

Solutions Collecting From Web of "Android RelativeLayout изменяет высоту программно"

Сначала конвертируйте 200 дп в пиксели –

 final float scale = getContext().getResources().getDisplayMetrics().density; int pixels = (int) (200 * scale + 0.5f); 

Затем установите программно,

 RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, pixels); rel_btn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); scrollpopap.setLayoutParams(rel_btn); scrollpopap.setScrollingEnabled(false); 

Преобразуйте DP в PX, как это.

 final float scale = getContext().getResources().getDisplayMetrics().density; int px = (int) (100 * scale + 0.5f); // replace 100 with your dimensions 

Установите параметр layout_gravity относительной компоновки. И изменить высоту и ширину по java-коду.

 RelativeLayout rl = (RelativeLayout) findViewById(R.id.yourId); rl.getLayoutParams().height = px; rl.getLayoutParams().width = px; 
 RelativeLayout layout = (RelativeLayout) findViewById(R.id.yourlayout_id); // Gets the layout params that will allow you to resize the layout LayoutParams params = layout.getLayoutParams(); params.height = 320; params.width = 320; 

Если вы намереваетесь изменить относительную высоту макета, то эта помощь.

 RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.yourId); relativeLayout.getLayoutParams().height = 100; relativeLayout.getLayoutParams().width = 100;