【发布时间】:2014-09-18 12:26:47
【问题描述】:
我遇到了一个小问题,我坚持了很长时间。
我有一个 Android 应用程序,有一个 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) ;
我的drawble资源:
<?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。
【问题讨论】:
-
你试过
getMeasuredWidth()和getMeasuredHeight()吗? -
@ataulm 也没有用。
-
也许可以发布您的自定义视图类,以及 XML 布局。