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

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

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

在这里输入图像说明

  • Android:ID列表视图
  • 在android中listview项的边框
  • 获取联系人照片基于联系人PhoneNumber Android的 - 工作示例
  • Android - 保存/恢复ListView适配器的正确方法是什么?
  • ListView中的Android EditText - 键盘
  • 如何使ListView的页眉或页脚不可点击
  • Android ListView setSelection()似乎不工作
  • Android - ListView中包含的MapView
  • 最后更新:现在,我可以比以前的解决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); } } }