膨胀的布局的孩子没有显示

时间:2013-08-01 19:07:05

标签: java android android-layout android-xml

我使用的是DraggableGridView from here

我之前做的是在网格中添加一个简单的以编程方式构建的ImageViews。这完全没问题。

我现在正尝试添加Layout。我在RelativeLayout内尝试了FrameLayout,Framelayout,RelativeLayout

以下是我的代码:

/**
 * Rebuild the grid view, e.g. after the adapter has been filled or a backup is restored
 */
private void renewGrid()
{
    dgv.removeAllViews();
    for(int i = 0; i < adapter.getCount(); i++)
    {
        LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        dgv = (DraggableGridView) inflater.inflate(R.layout.grid_item_layout, dgv);
        FrameLayout fl = (FrameLayout) dgv.findViewById(R.id.grid_images);
        ImageView icon = (ImageView) fl.findViewById(R.id.qstile);
        icon.setImageDrawable(res.getDrawable(res.getIdentifier("qstile_" + adapter.getItem(i), "drawable", packagename)));
    }
}

关注grid_item_layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <FrameLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/grid_images">
        <ImageView
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:src="@drawable/icon_delete"/>

        <ImageView
            android:id="@+id/qstile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </FrameLayout>

    <TextView
        android:id="@+id/invisible_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text=""
        android:visibility="gone" />

</RelativeLayout>

RelativeLayout很好地膨胀到网格中。我可以通过DDMS和“转储视图层次”功能观察到这一点。树显示网格内的所有RelativeLayouts,但每个都没有任何子项。

但是......那不是真的。如果我单步执行代码并观察膨胀的布局,我可以看到孩子们。所以它们已经设置好,就像在XML中一样被添加,但是不要被绘制。

网格子节点上的OnItemClick listener也有效......

关于我在这里缺少什么的暗示?我已经尝试了几种方法,甚至以编程方式创建完整的布局,然后将其作为子项添加到网格中。仍然没有运气。没有孩子被添加。

这可能是使用过的DraggableGridView

的问题

1 个答案:

答案 0 :(得分:2)

在搜索了几个小时后,我在this SO thread

中找到了修复程序

基本上我现在从DraggableGridView延伸FrameLayout而不是ViewGroup。这对我没有任何明显的副作用。