Georg Herbrand
- Forum-Beiträge: 6
02.03.2014, 09:45:00 via Website
02.03.2014 09:45:00 via Website
Hallo Zusammen,
ich möchte für einen Chat ein dynamisches Layout kreieren, das Scrollen zu älteren Nachrichten ermöglichen soll. Das Layout ist simpel
und der Programmcode erfüllt auch seinen Zweck.
[code]private void setloTextArea(String[] Text){
loTextArea.removeAllViews();
loTextArea.setGravity(Gravity.BOTTOM);
for (int i=0; i<Text.length;i++){
// Create TextView
TextView Entry = new TextView(this);
Entry.setId(i);
Entry.setTextSize(20);
Entry.setText(Text[i]);
Entry.setPadding(25, 25, 25, 25);
Entry.setGravity(Gravity.RIGHT);
loTextArea.addView(Entry);
}
ScrollArea.removeAllViews();
ScrollArea.fullScroll(View.FOCUS_UP);
ScrollArea.addView(loTextArea);
}[/code]
Das Problem ist, dass wenn das Layout "voll" ist und die Scrollfunktionalität "beginnen" sollte, werden ältere Nachrichten nicht mehr angezeigt aber dafür wird der Raum am unteren Ende des Layouts geschaffen. D.h. die letzten Nachrichten werden immer auf dem Screen angezeigt, ältere Nachrichten (oben) verschwinden und dafür wird unten der Platz angefügt, kann gescrollt werden und ist aber leer.
Bitte helft. Wie kann ich das LinearLayout so einrichten, dass beliebig viele Nachrichten anfügen kann, und bei bedarf zu älteren nachrichten hochscrollen kann.
Dank und Gruß
Georg
ich möchte für einen Chat ein dynamisches Layout kreieren, das Scrollen zu älteren Nachrichten ermöglichen soll. Das Layout ist simpel
1<LinearLayout
2 ...
3 android:orientation="vertical"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:layout_gravity="bottom"
7 android:weightSum="100"
8 tools:context=".ChatActivity" >
9<ScrollView
10 android:id="@+id/ScrollArea"
11 android:layout_width="match_parent"
12 android:layout_height="match_parent"
13 android:layout_weight="20"
14 android:background="#0000FF">
15
16 <LinearLayout
17 android:id="@+id/loTextArea"
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:layout_gravity="bottom"
21 android:orientation="vertical" >
22 </LinearLayout>
23
24</ScrollView>
25
26
27<LinearLayout
28 android:id="@+id/loInputArea"
29 android:layout_width="match_parent"
30 android:layout_height="match_parent"
31 android:layout_weight="80"
32 android:layout_gravity="bottom"
33 android:orientation="horizontal"
34 android:weightSum="100" >
35
36 <EditText
37 android:id="@+id/etInput"
38 android:layout_width="match_parent"
39 android:layout_height="wrap_content"
40 android:layout_weight="30" >
41
42 <requestFocus />
43 </EditText>
44
45 <Button
46 android:id="@+id/btSend"
47 android:layout_width="match_parent"
48 android:layout_height="wrap_content"
49 android:layout_weight="70"
50 android:text="Senden" />
51
52 </LinearLayout>
53
54</LinearLayout>
2 ...
3 android:orientation="vertical"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:layout_gravity="bottom"
7 android:weightSum="100"
8 tools:context=".ChatActivity" >
9<ScrollView
10 android:id="@+id/ScrollArea"
11 android:layout_width="match_parent"
12 android:layout_height="match_parent"
13 android:layout_weight="20"
14 android:background="#0000FF">
15
16 <LinearLayout
17 android:id="@+id/loTextArea"
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:layout_gravity="bottom"
21 android:orientation="vertical" >
22 </LinearLayout>
23
24</ScrollView>
25
26
27<LinearLayout
28 android:id="@+id/loInputArea"
29 android:layout_width="match_parent"
30 android:layout_height="match_parent"
31 android:layout_weight="80"
32 android:layout_gravity="bottom"
33 android:orientation="horizontal"
34 android:weightSum="100" >
35
36 <EditText
37 android:id="@+id/etInput"
38 android:layout_width="match_parent"
39 android:layout_height="wrap_content"
40 android:layout_weight="30" >
41
42 <requestFocus />
43 </EditText>
44
45 <Button
46 android:id="@+id/btSend"
47 android:layout_width="match_parent"
48 android:layout_height="wrap_content"
49 android:layout_weight="70"
50 android:text="Senden" />
51
52 </LinearLayout>
53
54</LinearLayout>
und der Programmcode erfüllt auch seinen Zweck.
1
[code]private void setloTextArea(String[] Text){
loTextArea.removeAllViews();
loTextArea.setGravity(Gravity.BOTTOM);
for (int i=0; i<Text.length;i++){
// Create TextView
TextView Entry = new TextView(this);
Entry.setId(i);
Entry.setTextSize(20);
Entry.setText(Text[i]);
Entry.setPadding(25, 25, 25, 25);
Entry.setGravity(Gravity.RIGHT);
loTextArea.addView(Entry);
}
ScrollArea.removeAllViews();
ScrollArea.fullScroll(View.FOCUS_UP);
ScrollArea.addView(loTextArea);
}[/code]
Das Problem ist, dass wenn das Layout "voll" ist und die Scrollfunktionalität "beginnen" sollte, werden ältere Nachrichten nicht mehr angezeigt aber dafür wird der Raum am unteren Ende des Layouts geschaffen. D.h. die letzten Nachrichten werden immer auf dem Screen angezeigt, ältere Nachrichten (oben) verschwinden und dafür wird unten der Platz angefügt, kann gescrollt werden und ist aber leer.
Bitte helft. Wie kann ich das LinearLayout so einrichten, dass beliebig viele Nachrichten anfügen kann, und bei bedarf zu älteren nachrichten hochscrollen kann.
Dank und Gruß
Georg
— geändert am 02.03.2014, 09:46:53
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.