适配器中的膨胀布局忽略大小

时间:2013-04-30 12:27:15

标签: android android-layout

我正在尝试在listadapter中夸大此资源:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="#ff0000"
    android:padding="@dimen/spacing_micro" >

    <View android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:background="#00ff00"/>
</FrameLayout>

使用以下代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewGroup view = (ViewGroup) convertView;
    if (view == null) {
        view = (ViewGroup) LayoutInflater.from(getContext()).inflate(R.layout.myview, parent, false);
    }

    return view;
}

虽然我指定高度和宽度为200dp的myview的根,但它完全忽略了大小,并导致大小为0x0。

在代码中指定自定义高度和宽度会导致视图占用父级的大小,再次忽略我的200dp首选项:

ViewGroup.LayoutParams layoutParams = (ViewGroup.LayoutParams) view.getLayoutParams();
layoutParams.height = dpToPx(200);
layoutParams.width = dpToPx(200);
view.setLayoutParams(layoutParams);

如何实现我想要的,View的根位于200x200dp且相对大小为match_parent的孩子?

2 个答案:

答案 0 :(得分:2)

尝试使用一些父布局包装你的FrameLayout,该布局具有指定给match_parent的layout_width和layout_height属性。然后在该父级内部,您可以设置FrameLayout的大小和重力 -

答案 1 :(得分:1)

基本上,添加另一个布局并指定该布局的高度。使用适配器视图时,指定根布局的高度不起作用。