在不设置宽度和高度的情况下将边距设置为LinearLayout

时间:2014-09-18 12:26:47

标签: android android-layout

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

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

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

我尝试过这样的事情:

    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。

2 个答案:

答案 0 :(得分:0)

试试这个:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

答案 1 :(得分:0)

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