我正在尝试使桌子/网格充满物品。到目前为止,我已经实现了Fuzzical Logic提出的GridView。这是一个image of the result。我可以双向滚动。

我的问题是,通过在我的OnTouchListener上设置一个新的GridView(启用双向滚动),我的项目不再可单击。我试图从我的OnItemClickListener的onTouch方法调用GridView,但是我认为它太复杂了。

因此,我现在问您,显示可双向滚动的可点击项目表的最佳方法是什么?
同样,项目数和列数也可能相差很大。可以有“空”单元格。

我真的很喜欢GridView,因为它易于管理,但是缺少2D滚动。任何想法 ?

戈达克

最佳答案

我已经通过以下方式实现了可点击表格:

    TableLayout table = (TableLayout) findViewById(R.id.tableReportsList);
    table.setStretchAllColumns(true);
    table.setShrinkAllColumns(true);
    final String tag = "tag";

    for (Report tempReport : reportsRepository)
    {
        TableRow row = new TableRow(this);
        TableLayout.LayoutParams tableRowParams=new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.WRAP_CONTENT);
        tableRowParams.setMargins(0, 10, 0, 10);
        row.setLayoutParams(tableRowParams);
        row.setClickable(true);
        TextView tvName = new TextView(this);
        tvName.setBackgroundDrawable(getResources().getDrawable(R.drawable.table_row_shape));
        tvName.setText(tempReport.getName());
        tvName.setGravity(Gravity.CENTER_HORIZONTAL);
        tvName.setTextColor(getResources().getColor(R.color.my_black));
        tvName.setTag(tag);
        row.addView(tvName);
        TextView tvPath = new TextView(this);
        tvPath.setBackgroundDrawable(getResources().getDrawable(R.drawable.table_row_shape));
        tvPath.setText(tempReport.getPath());
        tvPath.setGravity(Gravity.CENTER_HORIZONTAL);
        tvPath.setTextColor(getResources().getColor(R.color.my_black));
        row.addView(tvPath);
        map.put(tempReport.getName(), tempReport);
        row.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v)
            {
                TextView tvName = (TextView) v.findViewWithTag(tag);
                Log.d(TAG, "looking for report with name: " + tvName.getText());
                Report report = (Report)map.get(tvName.getText());
                Log.d(TAG, "The report found: " + report.toString());
                Map<String, String> valuesmap = new HashMap<String, String>();
                valuesmap.put(GetParametersAsyncTask.REPORTID_PARAM, report.getId());
                Log.d(TAG, "passed the following id to the asynctask: "+ report.getId());
                GetParametersAsyncTask asyncTask = new GetParametersAsyncTask(ReportsTableActivity.this, ((SGRaportManagerAppObj)getApplication()).getCurrentUrl());
                asyncTask.execute(valuesmap);
            }
        });
        table.addView(row);
    }


而xml文件如下所示:

<FrameLayout>
  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="55dp" >

    <TableLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/tableReportsList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:shrinkColumns="*"
        android:stretchColumns="*" >

        <TableRow
            android:layout_height="wrap_content"
            android:background="@color/light_gray"
            android:textStyle="bold" >

            <TextView
                android:id="@+id/nameLabel"
                android:layout_height="wrap_content"
                android:background="@drawable/table_row_shape"
                android:gravity="center_horizontal"
                android:text="@string/report_name"
                android:textColor="@color/my_black"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/pathLabel"
                android:layout_height="wrap_content"
                android:background="@drawable/table_row_shape"
                android:gravity="center_horizontal"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                android:text="@string/report_path"
                android:textColor="@color/my_black"
                android:textStyle="bold" />
        </TableRow>
    </TableLayout>
</ScrollView>




看看是否对您有帮助。

07-24 09:50
查看更多