2014-09-26 2 views
18

Я пытаюсь изменить макет высоты программно. У меня две кнопки. В одной кнопке я меняю положение макета и вторую кнопку, я пытаюсь получить позицию сохранения, когда я был в первый раз.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 и есть разная высота. Как я могу написать экономию по высоте программно?

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

ответ

31

Первое преобразование 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); 
+1

спасибо, что он работает – Beka

+0

Если у меня есть ребенок внутри RelativeLayout с match_parent в ширину и изменять ширину от RelativeLayout, как можно обновить ширину ребенка? – jose920405

20

Преобразовать DP РХ, как это.

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

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

RelativeLayout rl = (RelativeLayout) findViewById(R.id.yourId); 
rl.getLayoutParams().height = px; 
rl.getLayoutParams().width = px; 
+0

Вы не дп здесь ... – Kostya

3

Используйте этот

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

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

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