我正在尝试制作一个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>
答案 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?