要设置布局参数(宽度,高度和边距)或以编程方式将LayoutParams设置为特定布局,必须知道父级的布局类型。
示例1
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
someLayout.setLayoutParams(lp);
这里,someLayout类型并不是真的需要知道。 LinearLayout.LayoutParams表示someLayout的父级是LinearLayout。
示例2
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)someLayout.getLayoutParams();
lp.width = LayoutParams.MATCH_PARENT;
lp.height = LinearLayout.LayoutParams.MATCH_PARENT;
父类型未知时会出现问题。实现可自定义的列表视图行布局将导致具有未知行父级的情况。保存列表项的父级。
列表视图项的示例布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/country"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal|top">
.
.
</LinearLayout>
这里面是在Adapter类的getView方法中返回的View。
如何将LayoutParams设置为ID为@+id/country
???
我真正关心的是将边距设置为该布局。
答案 0 :(得分:1)
如果您不知道或不能确定父级的类,则可以使用通用ViewGroup.LayoutParams
。但是,在您的情况下,父级是ListView本身,因此如果您需要更具体的内容,可以使用AbsListView.LayoutParams
。
现在,问题在于ListView不支持边距。如果要在项目之间添加一些空格,可以使用每行的填充。如果这对您不起作用,您还可以使用所需的高度向ListView添加透明除数,也可以为ListView添加水平边距。像这样:
<ListView
...
android:divider="@android:color/transparent"
android:dividerHeight="10dp"
android:marginLeft="5dp"
android:marginRight="5dp" />
会在每个列表单元格周围添加5dp的边距。