【问题标题】:Button Zoom on a table layout表格布局上的按钮缩放
【发布时间】:2014-09-16 21:49:45
【问题描述】:

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

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

<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();

没有任何效果。

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

【问题讨论】:

    标签: android android-xml tablelayout pinchzoom


    【解决方案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,但您必须使子 Views 流动,以便它们根据父布局进行调整。

    【讨论】:

    • 这似乎不起作用。请检查 Java 代码的更新问题。我累了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    相关资源
    最近更新 更多