按钮缩放表布局



我有一个动态生成的表布局在父scrollview和水平scrollview。

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

<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行,扩大文本。当我缩小时,砰!我看到的是正常大小的第100行。

我添加了

 sv.requestLayout();

也试过

 invalidate();

毫无效果。

这里有什么问题?如何解决?

您是否尝试更改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的流体,使他们根据父布局调整。

最新更新