按钮放大表格布局

时间:2014-07-25 05:59:03

标签: android android-xml tablelayout pinchzoom

我在父卷轴视图和水平滚动视图中有一个动态生成的表格布局的表格。

我想在此表布局上实现按钮或缩放缩放。怎么做?任何一个更容易实现的都可以。

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp" android:layout_width="match_parent"
    android:layout_height="match_parent">

        <ScrollView android:layout_below="@+id/tableHeader"
            android:layout_width="match_parent" android:layout_height="match_parent"
            android:id="@+id/scrollZoomView">

            <TableLayout android:stretchColumns="0,1" android:id="@+id/main_table"
                android:layout_height="wrap_content" android:layout_width="match_parent" />

        </ScrollView>

</HorizontalScrollView>

编辑添加Java代码:

    zoomIn.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            zoom(2.0f, 2.0f, 0.0f, 0.0f);
        }
    });

    zoomOut.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            zoom(1.0f, 1.0f, 0.0f, 0.0f);
        }
    });

public void zoom(float scalex, float scaley, float pivotx, float pivoty){
    sv.setScaleX(scalex);
    sv.setScaleY(scaley);
    sv.setPivotX(pivotx);
    sv.setPivotY(pivoty);
    sv.requestLayout();
}

我得到的问题是滚动宽度和高度没有自我更新以适合放大的数据。例如,表中有100行。现在我放大后,我可以用放大的文字滚动到第80行。当我缩小时,BAM!我看到正常尺寸的第100行。

我添加了

 sv.requestLayout();

也尝试了

 invalidate();
没什么用的。

这是什么问题?怎么解决呢?

1 个答案:

答案 0 :(得分:1)

您是否尝试过更改LayoutParams的值?

TableLayout mainTableLayout = (TableLayout) findViewById(R.id.main_table);

zoomView(view, 1.5); // Zoom in to 150%
zoomView(view, 0.5); // Zoom out to 50%


function zoomView(View view, int zoomX){
    ViewGroup.LayoutParams viewParams = view.getLayoutParams();
    viewParams.width *= zoomX;
    viewParams.height *= zoomX;
    view.setLayoutParams(viewParams);
}

注意:这只会扩展您的TableLayout,但您必须使子View流畅,以便根据父布局进行调整。