如何在Android中创build一个类似于视图的架子?

如何创build一个像android中的视图,在任何行显示几本书? 此外,它应该有像月亮+读卡器应用程序一样的水平和垂直function。

我可以写一个水平移动的架子视图,但它不能完全工作。 我用一个XML文件查看项目,包括图像,文字和button。 我写了一个扩展AdapterView的类来创build一个我称之为"shelf view"的自定义ListView 。 不幸的是,我的程序显示了一行,我不能用它几行。

在这里输入图像说明

Solutions Collecting From Web of "如何在Android中创build一个类似于视图的架子?"

最后更新:现在,我可以比以前的解决scheme更好地检测出创build货架视图的新方法。 我在CodeProject中描述了它

顺便说一下,在这个应用程序中,我使用了两个类:

  • Horizo​​ntalListView扩展AdapterView的类。 它从GitHub下载

  • Quare库的使用与.Net中的Linq2Object几乎相同。 你可以在这里下载。


4月22日12:

有一些方法来实现货架视图,它有两个function(水平和垂直滚动)。 我尝试编写一个可以dynamic运行的程序。 这个示例应用程序有一个XML文件和一个showShelfView Java类。

所以你可以看到我的应用程序:

主XML文件:首先,在main.XML中添加以下代码

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/sclView"> <TableLayout android:id="@+id/tblLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="0dp"> </TableLayout> </ScrollView> 

showShelfView类:内部TableLayout添加几个Horizo​​ntalScroll等于与行数。 也内部任何TableRow添加图像。

别忘了为Row的背景设置一个架子图像:

在这里输入图像说明

 public class showShelfView extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); int numRow = 4; int numCol = 8; TableLayout tblLayout = (TableLayout) findViewById(R.id.tblLayout); for(int i = 0; i < numRow; i++) { HorizontalScrollView HSV = new HorizontalScrollView(this); HSV.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); TableRow tblRow = new TableRow(this); tblRow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); tblRow.setBackgroundResource(R.drawable.bookshelf); for(int j = 0; j < numCol; j++) { ImageView imageView = new ImageView(this); imageView.setImageResource(R.drawable.book1); TextView textView = new TextView(this); textView.setText("Java Tester"); textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); tblRow.addView(imageView,j); } HSV.addView(tblRow); tblLayout.addView(HSV, i); } } }