我遇到了一个小问题,我坚持了很长时间。
我有一个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。
答案 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);