android的RelativeLayout如何以编程方式更改高度?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我尝试以编程方式更改布局高度。我有两个按钮。在一个按钮中,我改变了我的布局位置,第二个按钮我尝试接收我第一次保存的位置:

<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,并且有不同的高度。我怎样才能编程保存高度?

提问于
用户回答回答于

首先将200 dp转换为像素 :

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;

扫码关注云+社区