Кнопка Zoom на макете таблицы

У меня есть динамически сгенерированные таблицы макета таблицы внутри родительского прокрутки и горизонтальной прокрутки.

Я хочу реализовать масштабирование кнопки или щипка в этом макете таблицы. Как это сделать? Подойдет любой из двух, который проще реализовать.

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

ничего не работало.

В чем проблема? как это решить?


person Sarthak Majithia    schedule 25.07.2014    source источник


Ответы (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 плавными, чтобы они настраивались в соответствии с родительским макетом.

person Nitesh Garg    schedule 25.07.2014
comment
это не похоже на работу. пожалуйста, проверьте обновленный вопрос для кода Java. что я устал. - person Sarthak Majithia; 28.07.2014