Как вертикальная, так и горизонтальная прокрутка

Я использую таблицу, которая нуждается как в вертикальной, так и в горизонтальной прокрутке. Я использовал два вида прокрутки, чтобы сделать это, как показано ниже. Можно ли использовать один для обеих целей? Значение включает один вид прокрутки как по горизонтали, так и по вертикали:

LinearLayout contentView = (LinearLayout) findViewById(R.id.contentView);
TableLayout tableLayout = new TableLayout(getApplicationContext());
TableRow tableRow;
TextView textView;

    for (int i = 0; i <28; i++) {
    tableRow = new TableRow(getApplicationContext());
    for (int j = 0; j < 16; j++) {
        textView = new TextView(getApplicationContext());
        textView.setText("test");
        textView.setPadding(20, 20, 20, 20);
        tableRow.addView(textView);
    }
    tableLayout.addView(tableRow);
}
ScrollView scroll = new ScrollView(MainActivity.this);
scroll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                                     LayoutParams.FILL_PARENT));
scroll.addView(tableLayout);
HorizontalScrollView horizontalScroll = new HorizontalScrollView(MainActivity.this);
horizontalScroll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                                                 LayoutParams.FILL_PARENT));
horizontalScroll.addView(scroll);
contentView.addView(horizontalScroll);

person Ali Hassan    schedule 05.12.2013    source источник


Ответы (1)


Вы можете использовать пользовательский код просмотра прокрутки, который вы можете использовать в своем XML-файле. Это один небольшой пример для просмотра с вертикальной прокруткой, в котором вы также можете использовать горизонтальную прокрутку.

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class VerticalScrollview extends ScrollView {

    public VerticalScrollview(Context context) {
        super(context);
    }

    public VerticalScrollview(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public VerticalScrollview(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        final int action = ev.getAction();
        switch (action) {
        case MotionEvent.ACTION_DOWN:
            Log.i("VerticalScrollview",
                    "onInterceptTouchEvent: DOWN super false");
            super.onTouchEvent(ev);
            break;

        case MotionEvent.ACTION_MOVE:
            return false; // redirect MotionEvents to ourself

        case MotionEvent.ACTION_CANCEL:
            Log.i("VerticalScrollview",
                    "onInterceptTouchEvent: CANCEL super false");
            super.onTouchEvent(ev);
            break;

        case MotionEvent.ACTION_UP:
            Log.i("VerticalScrollview", "onInterceptTouchEvent: UP super false");
            return false;

        default:
            Log.i("VerticalScrollview", "onInterceptTouchEvent: " + action);
            break;
        }

        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        super.onTouchEvent(ev);
        Log.i("VerticalScrollview", "onTouchEvent. action: " + ev.getAction());
        return true;
    }
}
person Nagaraja    schedule 05.12.2013