android RelativeLayout изменение высоты программно
Я пытаюсь изменить высоту макета программно. У меня две пуговицы. В одной кнопке я меняю положение макета, а вторая кнопка пытается получить save position witch я был в первый раз.
<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, и есть разные высоты. Как я могу написать save height в программно?
если кто знает решение, Пожалуйста, помогите мне спасибо
4 ответов
сначала преобразовать 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 = (RelativeLayout) findViewById(R.id.yourId);
relativeLayout.getLayoutParams().height = 100;
relativeLayout.getLayoutParams().width = 100;