Dynamiczne tworzenie interfejsu.

0

Witam,
Zastanawiam się czy można jakoś tworzyć w Androidzie dynamicznie interfejs. Chodzi mi np. o coś takiego, że np. jest aplikacja w której użytkownik odpowiada na losowe pytania z wcześniej utworzonej bazy ale przez przystąpieniem może wybrać ile chce pytań. I np. chce 10 pytań to jest tworzone 10 przycisków (z numerami od 1 do 10) które po kliknięciu ładują dane pytanie. Czy można w jakiś sposób coś takiego zrobić? Czy może jest to ciężkie do osiągnięcia?

0

Na Windows Phone do ListBoxa mogłeś dodawać obiekty klasy Button. Może coś podobnego można w Javie?

0

Można i jest to całkiem proste. Praktycznie każdą kontrolkę jak i layouty można dodawać do UI "programowo".

0

Pętla for?

0

@bolson

A w jaki sposób można programowo ustawić pozycję takiego dodanego programowo elementu?
np. w activity.xml mam coś takiego:

<Button
        android:layout_width="20dp"
        android:layout_height="50dp"
        android:text="Button"
        android:id="@+id/button"
        android:layout_below="@+id/textView1"
        android:layout_toRightOf="@+id/textView1"
        android:layout_marginLeft="31dp"
        android:layout_marginTop="109dp" />

Napisałem coś takiego:

RelativeLayout rLayout = (RelativeLayout) findViewById(R.id.rlayout);

        Button tv1 =  new Button(this);
        tv1.setText("Button");
        tv1.setId(1);
        tv1.setHeight(50);
        tv1.setWidth(100);
        rLayout.addView(tv1);

Ale nie mam pojęcia jak napisać, żeby ten przycisk był odsunięty o 31dp w prawo i był 109dp pod textView1.

1
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,      
        RelativeLayout.LayoutParams.WRAP_CONTENT
);

params.addRule(RelativeLayout.BELOW, R.id.textView1);
params.addRule(RelativeLayout.RIGHT_OF, R.id.textView1);

// left, top, right, bottom to wartosci marginesow w pikselach, wiec przelicz z dp na piksele
params.setMargins(left, top, right, bottom);

tv1.setLayoutParams(params);
0

Nie wiem czy nie wygodniej byłoby zrobić customowy arrayadapter i dać przycisk w każdym wierszu który by go "otwierał".

1 użytkowników online, w tym zalogowanych: 0, gości: 1