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
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
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ł".