Mam tablicę o długości n, teraz muszę utworzyć liczbę n liniowych linijek i dodać różne rzeczy na każdym z nich. Jak to zrobić dynamicznie?Jak dynamicznie dodawać LinearLayout na Androida?
5
A
Odpowiedz
4
LinearLayout lLayour = new LinearLayout(context);
parentWidget.addView(lLayout);
4
Najprostszym sposobem jest stworzenie layoutu w formacie XML i napompować go za pomocą
LayoutInflater.from(context).inflate(R.layout.my_linear_layout);
Można też do setId()
dodana swoich poglądów, dzięki czemu można łatwo uzyskać do nich dostęp później.
2
Rozwiązałem go za pomocą RelativeLayout, z którym łatwiej było mi pracować. Tak, oczywiście jak faceci wskazani powyżej użyłem setId()
. Oto kod, który zaimplementowałem:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ScrollView sv = new ScrollView(this);
//Parent RelativeLayout
parentLayout = new RelativeLayout(this);
parentLayout.setBackgroundColor(Color.WHITE);
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
parentLayout.setLayoutParams(params);
sv.addView(parentLayout);
final String[] comList = getCommunication();
int listLength=0;
try{
listLength= comList.length/3;
}catch(Exception e){System.out.println(e);System.exit(0);}
childLayout= new RelativeLayout[listLength] ;
TextView[] tvName = new TextView[listLength];
TextView[] tvDate =new TextView[listLength];
TextView[] tvMsg =new TextView[listLength];
for(int i =0;i<listLength;i++){
try{
childLayout[i] = new RelativeLayout(this);
childLayout[i].setPadding(5, 5, 5, 5);
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 75);
if(i==0){params.addRule(RelativeLayout.BELOW);}
else{params.addRule(RelativeLayout.BELOW,i);}
childLayout[i].setId(i+1);
childLayout[i].setClickable(true);
childLayout[i].setLayoutParams(params);
childLayout[i].setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//Create the intent
Intent i = new Intent("ACTIIVTY");
startActivity(i);
}
});
tvName[i] = new TextView(this);
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
tvName[i].setLayoutParams(params);
childLayout[i].addView(tvName[i]);
if(comList[i*3].length()>24){
String name = comList[i*3].substring(0,24)+"...";
tvName[i].setText(name);
}else{
tvName[i].setText(comList[i*3]);
}
tvName[i].setId(listLength+1+i);
tvName[i].setTextSize(12);
tvName[i].setTextColor(Color.BLACK);
tvDate[i] = new TextView(this);
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
tvDate[i].setLayoutParams(params);
childLayout[i].addView(tvDate[i]);
tvDate[i].setTextSize(11);
tvDate[i].setTextColor(Color.BLUE);
tvDate[i].setText(comList[i*3+1]);
tvMsg[i] = new TextView(this);
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, listLength+1+i);
tvMsg[i].setLayoutParams(params);
childLayout[i].addView(tvMsg[i]);
tvMsg[i].setTextSize(11);
tvMsg[i].setTextColor(Color.GRAY);
if(comList[i*3+2].length()>96){
String msg = comList[i*3+2].substring(0,96)+"...";
tvMsg[i].setText(msg);
}else{
tvMsg[i].setText(comList[i*3+2]);
}
parentLayout.addView(childLayout[i]);
}catch(Exception e){System.out.println("Errrorrrrr");}
}
setContentView(sv);
}
Powiązane problemy
- 1. Transparent LinearLayout na Androida
- 2. jVectorMap - Jak dynamicznie dodawać marker
- 3. ckeditor dynamicznie dodawać uiElement
- 4. dynamicznie dodawać i usuwać widok na viewpager
- 5. JQuery validate dynamicznie dodawać reguły
- 6. Dynamicznie dodawać komponenty do JDialog
- 7. Jak dynamicznie dodawać malejąco do orderby?
- 8. Jak dynamicznie dodawać formanty do formularza ASP.NET?
- 9. Jak dynamicznie dodawać wiersz do tabeli html
- 10. Haml: Jak dynamicznie dodawać klasy do elementu?
- 11. [jquery] Jak mogę dynamicznie dodawać przesyłane pliki?
- 12. Jak dynamicznie dodawać elementy do tablicy String?
- 13. Jak dynamicznie dodawać przyciski radiowe zgodnie z podaną liczbą zliczeń?
- 14. Android + setDividerDrawable na LinearLayout?
- 15. Dynamicznie ładuje plik XML do Linearlayout
- 16. Problem z dodawaniem widoku dynamicznie w Linearlayout
- 17. Jak przekonwertować LinearLayout na obraz?
- 18. Jak uzyskać dynamicznie dodawany identyfikator klikniętego widoku podrzędnego do LinearLayout?
- 19. dynamicznie dodawać zdjęcia do widżetu galerii
- 20. Dynamicznie wyświetlaj tekst ciągu na ekranie Androida
- 21. Moduły ładujące Androida dynamicznie
- 22. Kolor selektora na LinearLayout
- 23. Jak dynamicznie dodawać operator OR do klauzuli WHERE w LINQ
- 24. jak dynamicznie dodawać opcje do istniejącego zaznaczenia w javascript wanilli
- 25. Jak dynamicznie dodawać i usuwać css dla całej aplikacji JavaFX?
- 26. Jak mogę dynamicznie dodawać pola wejściowe do formularza?
- 27. Jak dynamicznie dodawać słowa uzupełniające do VS2013 Rozszerzenie składni (MEF)
- 28. Szyny 5 - jak dynamicznie dodawać zagnieżdżone pola w formularzu edycji?
- 29. Jak dynamicznie dodawać Validator do FormControl w Angular 2
- 30. Jak dynamicznie dodawać wmode = opaque do już wyświetlanych elementów embed?
A gdzieś tam przypisać wszystkie jego właściwości (zakładając, że potrzebujesz czegoś innego niż domyślne). – jwatts1980
Możesz również ustawić opcję LayoutParams dla elementu LinearLayout podrzędnego. lLayout.setLayoutPatams (layoutParams), – ihrupin
@ Hype jak uzyskać parentWidget? Jestem wewnątrz metody onCreate klasy, która dziedziczy klasę Activity i widok to setContentView (R.layout.someLayout) –