在DraggableGridView中显示布局

时间:2012-07-19 12:10:01

标签: java android android-layout

我正在尝试制作一个Grid of Image +字幕对,用户可以通过拖放重新排列。要做到这一点,我使用的是DraggableGridView - https://github.com/thquinn/DraggableGridView

虽然我可以显示TextViews和ImageViews并重新排列它们,但是当我尝试在一个布局中连接它们时,一切都停止显示。

因此,在解析带有图像和字幕的XML之后,这可以工作:

for(ImagePair pair : pairs){
    tv = new TextView(this);
    tv.setText(pair.getText());

    URL imageURL = new URL(pair.getURL());
    Bitmap bmp = BitmapFactory.decodeStream(imageURL.openConnection().getInputStream());
    imv = new ImageView(this);
    imv.setImageBitmap(bmp);

    dgv.addView(tv);
    dgv.addView(imv);

它显示文本和图像的网格,但它们没有配对 - 您可以使用图像等切换文本的位置。

当我尝试插入包含图像+文字的布局时:

for(ImagePair pair : pairs){

    Bitmap bmp = BitmapFactory.decodeStream(imageURL.openConnection().getInputStream());

    LayoutInflater li = getLayoutInflater();
    View v = li.inflate(R.layout.image, null);

    TextView txtv = (TextView)v.findViewById(R.id.ltext);  

    txtv.setText(pair.getText());

    ImageView iv = (ImageView)v.findViewById(R.id.limage);
    iv.setImageBitmap(bmp);

    dgv.addView(v);

什么都没有显示。我可以通过

显示任何单个视图
this.setContentView(v);

它会正确显示图像+字幕对,但尝试将它们插入网格会导致黑屏,尽管网格报告有9个孩子。

我正在使用的布局:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TableRow android:layout_width="wrap_content"
        android:layout_height="wrap_content">    

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

    </TableRow>

    <TableRow android:layout_width="wrap_content"
        android:layout_height="wrap_content">  

    <TextView
        android:id="@+id/ltext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:gravity="center_horizontal"
        android:textColorHighlight="#656565">
    </TextView>
    </TableRow>   

</TableLayout>

2 个答案:

答案 0 :(得分:4)

编辑

可以找到更好的版本here。它基于DraggableGridView,具有更多功能,处于活动开发状态并且相当稳定。

原帖:
我一直在使用这个库,我目前按照你希望它使用数据库的方式工作,我正在努力将它移动到ArrayAdapter。你可以找到我的前叉here

答案 1 :(得分:1)

在DraggableGridView.java中添加一行代码可以解决问题。打开DraggableGridView.java并添加以下行

getChildAt(i).measure(MeasureSpec.makeMeasureSpec(childSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(childSize, MeasureSpec.EXACTLY));

getChildAt(i).layout(xy.x, xy.y, xy.x + childSize, xy.y + childSize);

希望有所帮助。 从另一个帖子链接找到解决方案:Imageview and textview not displaying in view?