Показать в ScrollView в одной LinearLayout - PullRequest
0 голосов
/ 11 марта 2011

Я хочу показать два scrollView в одном LinearLayout или RelativeLayout.Какое свойство должно быть установлено, чтобы показывать первый вид прокрутки в верхней части экрана и второй вид прокрутки чуть ниже первого вида прокрутки?

Я пробовал, но в linearlayout он показывает мне только первый вид прокрутки, а в относительном макете он показывает только второй вид прокрутки.

Да, я хочу сделать все это динамически, без использования XML-файла.

Вот мой код

import android.app.Activity;


import android.os.Bundle;
import android.widget.*;
import android.widget.TableLayout.LayoutParams;

public class TableFinal extends Activity {
    LinearLayout linearMain, linearScrollView, linearTextview;
    RelativeLayout relativeMain;
    ScrollView scrollview;
    HorizontalScrollView Hscrollview;
    TableLayout tablelayout;
    TableRow tablerow;
    TextView textview;


    LinearLayout.LayoutParams linearparmas;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        linearparmas=new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);

        relativeMain = new RelativeLayout(this);

        // First Table
        linearScrollView = new LinearLayout(this);
        scrollview = new ScrollView(this);
        Hscrollview = new HorizontalScrollView(this);
        tablelayout = new TableLayout(this);

        // First Table's First Row
        tablerow = new TableRow(this);

        linearTextview = new LinearLayout(this);
        textview = new TextView(this);
        textview.setText("11");
        linearTextview.addView(textview);
        tablerow.addView(linearTextview);

        linearTextview = new LinearLayout(this);
        textview = new TextView(this);
        textview.setText("12");
        linearTextview.addView(textview);
        tablerow.addView(linearTextview);

        tablelayout.addView(tablerow);
        Hscrollview.addView(tablelayout);
        scrollview.addView(Hscrollview);
        linearScrollView.addView(scrollview);

        relativeMain.addView(linearScrollView);
        // first table complete

        // second tabler start
        linearScrollView = new LinearLayout(this);
        scrollview = new ScrollView(this);
        Hscrollview = new HorizontalScrollView(this);
        tablelayout = new TableLayout(this);

        // second Table's First Row
        tablerow = new TableRow(this);

        linearTextview = new LinearLayout(this);
        textview = new TextView(this);
        textview.setText("21");
        linearTextview.addView(textview);
        tablerow.addView(linearTextview);

        linearTextview = new LinearLayout(this);
        textview = new TextView(this);
        textview.setText("22");
        linearTextview.addView(textview);
        tablerow.addView(linearTextview);

        tablelayout.addView(tablerow);
        Hscrollview.addView(tablelayout);
        scrollview.addView(Hscrollview);
        linearScrollView.addView(scrollview);

        relativeMain.addView(linearScrollView);
        // second tabler complete

        setContentView(relativeMain);

    }
}

Спасибо.

1 Ответ

2 голосов
/ 11 марта 2011

Вы можете использовать LinearLayout или RelativeLayout.Для всех макетов необходимо получить displayHeight.

    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int displayHeight = display.getHeight();

Затем для всех макетов установить layoutParams для заполнения родительского.

Теперь для scrollViews начинаются различия.

В LinearLayout для обоихscrollViews устанавливают одинаковые layoutParams (LinearLayout.layoutParams)

scrollView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, displayHeight/2)); 

И добавляют оба к linearLayout

В RelativeLayout установите layoutParams, как в моем примере (RelativeLayout.layoutParams)

            RelativeLayout.LayoutParams lp1 = new LayoutParams(LayoutParams.FILL_PARENT, displayHeight);
            lp1.addRule(ALIGN_PARENT_TOP);
            scrollView1.setLayoutParams(lp1);
            RelativeLayout.LayoutParams lp2 = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
            lp2.addRule(BELOW, scrollView1.getId());
            scrollView2.setLayoutParams(lp2);

И добавить оба к макету.

Должно работать при любом разрешении экрана, если я не перепутал.

...