1

我正在尝试制作一个图像+标题对的网格,用户将能够通过拖放重新排列。为此,我使用 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);

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

当我尝试插入包含 Image+ 文本的布局时:

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>
4

2 回答 2

4

编辑

可以在这里找到更好的版本。它基于 DraggableGridView 并具有更多功能,正在积极开发中并且相当稳定。

原始帖子:
我一直在研究图书馆,我目前正在按照您希望它使用数据库的方式工作,我正在努力将它移动到 ArrayAdapter。你可以在这里找到我的叉子

于 2012-08-10T20:45:46.093 回答
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 display in view?

于 2015-11-04T12:43:35.063 回答