ListView Schriftgröße der Einträge ändern

  • Antworten:11
Johannes L.
  • Forum-Beiträge: 16

25.03.2013, 19:52:05 via Website

Hallo zusammen.
Ich möchte gern die Schriftgröße der Einträge in meiner ListView ändern. Damit habe ich es versucht:

1<ListView ....
2 android:id="@+id/ListView1"
3 android:textSize="50sp"
4 .... >
5
6</ListView>

Die Schriftgröße ändert sich aber nicht! Hat einer ne Ahnung?

— geändert am 25.03.2013, 19:54:41

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

25.03.2013, 22:39:03 via Website

Ein ListView zeigt Items an, die wiederum (ggf) Text anzeigen, daher musst du die TextSize dort einstellen, wenn sie effektiv sein soll.

Antworten
Appsoluts
  • Forum-Beiträge: 304

25.03.2013, 23:23:24 via Website

Den Adapter, dem du der ListView zuordnest, gibst du ja das Object für jede Row in der Liste als Parameter mit.
DIeses Objekt musst du, wie schon gesagt, ändern.

Antworten
Johannes L.
  • Forum-Beiträge: 16

27.03.2013, 12:01:51 via Website

Den Adapter, dem du der ListView zuordnest, gibst du ja das Object für jede Row in der Liste als Parameter mit

Und wie mache ich das? Kannst du mir vielleicht die Codezeile nennen?
Hier ist mein Code:
1@Override
2 public void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 setContentView(R.layout.liederliste);
5 //Add tracks to the list
6 liederListe.add("Dem Land Tirol die Treue");
7 liederListe.add("Egerländer Straßenmarsch");
8 liederListe.add("Koliner Marsch");
9 liederListe.add("Steigerlied");
10 //Adapter list
11 ArrayAdapter<String> adapter = new ArrayAdapter<String>(Liederliste.this, android.R.layout.simple_list_item_1, liederListe);
12 //List of the tracks
13 ListView Text = (ListView) findViewById(R.id.ListView1);
14 Text.setAdapter(adapter);
15 //Sensor a click on a track
16 Text.setOnItemClickListener(OnListClick);
17 }

Bersten Dank schonmal für eure Hilfe.

Antworten
B S.
  • Forum-Beiträge: 16

27.03.2013, 12:52:44 via Website

Johannes L.
Den Adapter, dem du der ListView zuordnest, gibst du ja das Object für jede Row in der Liste als Parameter mit

Und wie mache ich das? Kannst du mir vielleicht die Codezeile nennen?
Hier ist mein Code:
1@Override
2 public void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 setContentView(R.layout.liederliste);
5 //Add tracks to the list
6 liederListe.add("Dem Land Tirol die Treue");
7 liederListe.add("Egerländer Straßenmarsch");
8 liederListe.add("Koliner Marsch");
9 liederListe.add("Steigerlied");
10 //Adapter list
11 ArrayAdapter<String> adapter = new ArrayAdapter<String>(Liederliste.this, android.R.layout.simple_list_item_1, liederListe);
12 //List of the tracks
13 ListView Text = (ListView) findViewById(R.id.ListView1);
14 Text.setAdapter(adapter);
15 //Sensor a click on a track
16 Text.setOnItemClickListener(OnListClick);
17 }

Bersten Dank schonmal für eure Hilfe.

ich würde einfach ein eigenes Layout für die einzelnen Zeilen verwenden z.B.

1<?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout
3 android:id="@+id/LinearLayout01"
4 android:layout_width="fill_parent"
5 android:layout_height="wrap_content"
6 android:gravity="center_vertical"
7 android:orientation="vertical" >
8
9 <TextView
10 android:id="@+id/Zeile1"
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_content"
13 android:layout_marginLeft="5dp"
14 android:layout_marginTop="5dp"
15 android:text="empty"
16 android:textSize="10sp"
17 android:textColor="#000000" />
18
19 <TextView
20 android:id="@+id/Zeile2"
21 android:layout_width="wrap_content"
22 android:layout_height="wrap_content"
23 android:layout_marginLeft="5dp"
24 android:text="empty"
25 android:textSize="10sp"
26 android:textColor="#777777" />
27
28 </LinearLayout>

Antworten
Johannes L.
  • Forum-Beiträge: 16

27.03.2013, 13:30:59 via Website

Danke, aber das muss auch einfacher gehen.

Ich würde gern den Vorschlag von CBsol Android weiter verfolgen! Ich hoffe, der kann mir dabei weiterhelfen.

Gruß,
Johannes

Antworten
Appsoluts
  • Forum-Beiträge: 304

27.03.2013, 13:39:41 via Website

War schon richtig beschrieben.

In der Zeile ArrayAdapter<String> adapter = new ArrayAdapter<String>(Liederliste.this, android.R.layout.simple_list_item_1, liederListe);

übergibst du das Objekt : android.R.layout.simple_list_item_1, welches einer Zeile in der ListView entspricht.

Bau dir ein eigenes Layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="DIESE ZEILE MUSS VERGRÖ?ERT WERDEN"
android:textSize="xxdpi"
/>

/LinearLayout>


Diese XML legst du in den layout ordner und nennst sie z.b. myListViewEntry.xml
und änderst die Zeile

ArrayAdapter<String> adapter = new ArrayAdapter<String>(Liederliste.this, android.R.layout.simple_list_item_1, liederListe);

UM in

ArrayAdapter<String> adapter = new ArrayAdapter<String>(Liederliste.this, R.layout.myListViewEntry, liederListe);


Wie genau du ein Custon Layout als ListView benutzt findest du unter:

http://developer.android.com/guide/topics/ui/layout/listview.html

Antworten
Johannes L.
  • Forum-Beiträge: 16

27.03.2013, 13:53:02 via Website

Besten Dank für die schnelle Hilfe.

Ich hab ein Layout erstellt und das wie beschrieben übergeben. Aber aus der Beschreibung, wie man das Layout benutzt bin ich nicht schlau geworden.
Das reine übergeben reicht anscheinend nicht, aber was muss zusätzlich gemacht werden.
So wie ich das von euch verstanden habe, muss ich für jedes Item(Zeile) im Layout ein TextView erstellen.
Kann mir da nochmal jemand halfen?

Gruß,
Johannes

— geändert am 27.03.2013, 15:17:11

Antworten
B S.
  • Forum-Beiträge: 16

28.03.2013, 09:21:08 via Website

Am einfachsten ist es vielleicht einen SimpleAdapter mit einer HashMap zu verwenden. Alternativ könnte man z.B. einen eigenen Adapter schreiben. In den Layouts muss noch xmlns:android="..." hinterlegt werden. Den link darf ich nicht posten.

1private ListView listView;
2 private ArrayList<HashMap<String, Object>> mapList;
3 private SimpleAdapter simpleAdapter;
4
5 @Override
6 protected void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.activity_main);
9
10 listView = (ListView) findViewById(R.id.listView1);
11 mapList = new ArrayList<HashMap<String, Object>>();
12 simpleAdapter = new SimpleAdapter(this, mapList, R.layout.row,
13 new String[] { "Title"},
14 new int[] {R.id.row_Title});
15
16 HashMap<String, Object> map = new HashMap<String, Object>();
17 map.put("Title","test");
18 mapList.add(map);
19 HashMap<String, Object> map2 = new HashMap<String, Object>();
20 map.put("Title","test2");
21 mapList.add(map);
22
23 listView.setAdapter(simpleAdapter);
24 }

row.xml
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3android:layout_width="fill_parent"
4android:layout_height="wrap_content"
5android:gravity="center_vertical"
6android:orientation="vertical" >
7<TextView
8 android:id="@+id/row_Title"
9android:layout_width="fill_parent"
10android:layout_height="wrap_content"
11android:text="DIESE ZEILE MUSS VERGRÖ?ERT WERDEN"
12android:textSize="20sp"
13/>
14
15</LinearLayout>

activity_main.xml
1<RelativeLayout
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 tools:context=".MainActivity" >
5
6 <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true"></ListView>
7
8</RelativeLayout>

Bei Fragen einfach Fragen

Gruß

Appsoluts

Antworten
Johannes L.
  • Forum-Beiträge: 16

28.03.2013, 14:21:16 via Website

Hi zusammen,
ich habe das jetzt mit einer HashMap realisiert. Funktioniert soweit, aber ich möchte durch klicken auf ein Element in dem ListView eine neue Activity aufrufen und da soll dann der richtige Text zum Lied erscheinen.
Die neue Acitvity names Texte geht auch auf, aber es erscheint nur der String aus dem TextView des Layouts, der ersetzt werden soll.

Ich glaube, der String wird nicht richtig an die zweite Activity übergeben. Hatte vorher ein List<String> Array, wo nur Strings drinstehen und jetzt ja diese ArrayList<HashMap...> mit String und einem Object drin.
Da ist doch bestimmt was falsch, oder?

Hier mal mein Code:

Activity: Liederliste
1public class Liederliste extends Activity {
2 //Create pass string
3 public final static String String_EXTRA = "listview.de._ID";
4 ArrayList<HashMap<String, Object>> mapList;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.liederliste);
10
11 ListView Text = (ListView) findViewById(R.id.ListView1);
12 mapList = new ArrayList<HashMap<String, Object>>();
13 SimpleAdapter simpleAdapter = new SimpleAdapter(this, mapList, R.layout.listen_eintrag,
14 new String[] { "Title"},
15 new int[] {R.id.zeile});
16
17 HashMap<String, Object> map = new HashMap<String, Object>();
18 map.put("Title","Dem Land Tirol die Treue");
19 mapList.add(map);
20 HashMap<String, Object> map2 = new HashMap<String, Object>();
21 map2.put("Title","Egerländer Straßenmarsch");
22 mapList.add(map2);
23 HashMap<String, Object> map3 = new HashMap<String, Object>();
24 map3.put("Title","Koliner Marsch");
25 mapList.add(map3);
26 HashMap<String, Object> map4 = new HashMap<String, Object>();
27 map4.put("Title","Steigerlied");
28 mapList.add(map4);
29
30 Text.setAdapter(simpleAdapter);
31
32 //Sensor a click on a track
33 Text.setOnItemClickListener(OnListClick);
34 }
35
36 private AdapterView.OnItemClickListener OnListClick = new AdapterView.OnItemClickListener(){
37 //Information of the list item
38 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
39 //Pass the Text by using String_EXTRA
40 Intent i = new Intent(Liederliste.this, Texte.class);
41 i.putExtra(String_EXTRA, String.valueOf(mapList.get(position)));
42 startActivity(i);
43 }
44 };
45
46 @Override
47 public boolean onCreateOptionsMenu(Menu menu) {
48 // Inflate the menu; this adds items to the action bar if it is present.
49 getMenuInflater().inflate(R.menu.main, menu);
50 return true;
51 }
52}

Activity: Texte
1public class Texte extends Activity{
2 //Variable declaration
3 String passedVar=null;
4 private TextView passedView=null;
5
6 @Override
7 public void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.texte);
10
11 //Get our passed variable from our intent's EXTRAS
12 passedVar=getIntent().getStringExtra(Liederliste.String_EXTRA);
13 //Find out text view
14 passedView=(TextView)findViewById(R.id.text);
15 //Display the right Text to the passed Track
16 if (passedVar.equals("Dem Land Tirol die Treue")){
17 passedView.setText(R.string.tirol);
18 }
19 else if(passedVar.equals("Egerländer Straßenmarsch")){
20 passedView.setText(R.string.egerlaender);
21 }
22 else if(passedVar.equals("Koliner Marsch")){
23 passedView.setText(R.string.koliner);
24 }
25 else if(passedVar.equals("Steigerlied")){
26 passedView.setText(R.string.steiger);
27 }
28 }
29}

Layout: liederliste
1<ListView xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:id="@+id/ListView1"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:drawSelectorOnTop="true"
7 android:paddingBottom="2dp"
8 android:paddingLeft="5dp"
9 android:paddingRight="5dp"
10 android:paddingTop="2dp"
11 tools:context=".liederliste" >
12
13</ListView>

Layout: listen_einträge
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:id="@+id/myListViewEntry"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:orientation="vertical" >
7
8 <TextView
9 android:id="@+id/zeile"
10 android:layout_width="wrap_content"
11 android:layout_height="wrap_content"
12 android:paddingBottom="2dp"
13 android:paddingLeft="5dp"
14 android:paddingRight="5dp"
15 android:paddingTop="2dp"
16 android:text="DIESE ZEILE MUSS VERGRÖ?ERT WERDEN"
17 android:textSize="28sp"/>
18
19</LinearLayout>

Layout: texte
1<?xml version="1.0" encoding="utf-8"?>
2<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
3 android:id="@+id/ScrollView1"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent">
6
7 <TextView
8 android:id="@+id/text"
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:paddingBottom="2dp"
12 android:paddingLeft="5dp"
13 android:paddingRight="5dp"
14 android:paddingTop="2dp"
15 android:text="@string/text"
16 android:textSize="24sp" />
17
18</ScrollView>

Gruß,
Johannes

Antworten
B S.
  • Forum-Beiträge: 16

28.03.2013, 17:00:40 via Website

Du Übergibst die Position nicht den Inhalt so solte es gehen.

Im detail bereich musst du dann auch einen String auslesen und kein Integer.

1HashMap<String, Object> user = mapList.get(position);
2 Intent in = new Intent(Liederliste.this, Texte.class);
3 in.putExtra("Title", (String) user.get("Title"));
4 startActivity(in);

Gruß und schöne Ostern

Antworten
Johannes L.
  • Forum-Beiträge: 16

29.03.2013, 13:42:59 via Website

Jo, läuft.

Besten Dank und Frohe Ostern.

— geändert am 29.03.2013, 14:16:20

Antworten