将“边距”设置为LinearLayout,而不设置宽度和高度



我遇到了一个小问题,我坚持了很长时间。

我有一个Android应用程序,有一个LinearLayout,我在代码中动态地用其他元素填充这个LinearLayout。我添加的元素获得了一个可绘制的资源作为背景,其中定义了宽度和高度。

我的问题:
当我想通过LinearLayout.LayoutParams为这些元素设置边距时,我必须在构造器中传递宽度和高度值,这将覆盖我的绘图中的宽度和高度。

我试过这样的东西:

    this.setBackgroundResource(R.drawable.board_element) ;
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(this.getWidth(), this.getHeight());
    params.setMargins(0, 0, 0, 10) ;
    this.setLayoutParams(mparams) ;


也尝试过这个:

this.setBackgroundResource(R.drawable.board_element) ;
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) this.getLayoutParams();
params.setMargins(0, 0, 0, 10) ;
    this.setLayoutParams(params) ;



我的可提取资源:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
   <stroke
        android:width="1dp"
        android:color="@color/dark_brown" />
   <solid 
       android:color="@color/dark_brown"/>
   <corners
       android:radius="10dp" />
   <size 
       android:width="200dp"
       android:height="50dp" />
   <padding 
       android:left="5dp"
       android:top="9dp"
       android:right="10dp"
       android:bottom="5dp"/>
</shape>


但这不起作用,宽度和高度都为0。有什么建议吗
我的最低API水平是9最大19。

试试这个:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
LayoutParams p = new LayoutParams(LayoutParams.MATCH_PARENT,
                    LayoutParams.WRAP_CONTENT);
            p.setMargins(7, 8, 8, 8);
            LinearLayout llp = new LinearLayout(this);
            llp.setLayoutParams(p);
            llp.setBackgroundResource(R.drawable.survey_answer_box);

最新更新