Michael Röder
- Forum-Beiträge: 3
22.10.2012, 10:17:24 via Website
22.10.2012 10:17:24 via Website
Hi,
ich möchte vier NumberPicker in einem LinearLayout nebeneinander darstellen. Dieses LinearLayout befindet sich wiederum neben anderen innerhalb eines ScrollViews.
Die apk wird ohne Fehler erstellt, dummerweise verlieren aber alle NumberPickers (sowohl auf meinem Desire S, als auch im Emulator) ihre Scrollbarkeit, wenn man mit dem Finger drüberwischt. Der Wert rutscht dann einen Millimeter weiter und die "nach oben" / "nach unten" Pfeile verschwinden (siehe erster Picker auf dem Screenshot).
Ich hab zur Sicherheit oben und unten Abstände zum Rand eingeführt, falls das LinearLayout um die vier Picker zu klein ist. Das hat aber auch nichts geändert.
Erkennt jemant, woran das liegen könnte? Die App hat bisher nur eine Activity, daher poste ich fix xml- und java- Code. Das komplette Projekt (inklusive apk) zum Testen liegt auf:
w[orld].w[ide].w[eb].tvr-music.de/temp/Tankstatistik.zip.
Ich musste den Link etwas chiffrieren, weil ich als neuer User leider noch keine Links posten darf. Auch alle "xmins:android"- Tags aus der xml musste ich deshalb entfernen.
xml- File:
java-code
ich möchte vier NumberPicker in einem LinearLayout nebeneinander darstellen. Dieses LinearLayout befindet sich wiederum neben anderen innerhalb eines ScrollViews.
Die apk wird ohne Fehler erstellt, dummerweise verlieren aber alle NumberPickers (sowohl auf meinem Desire S, als auch im Emulator) ihre Scrollbarkeit, wenn man mit dem Finger drüberwischt. Der Wert rutscht dann einen Millimeter weiter und die "nach oben" / "nach unten" Pfeile verschwinden (siehe erster Picker auf dem Screenshot).
Ich hab zur Sicherheit oben und unten Abstände zum Rand eingeführt, falls das LinearLayout um die vier Picker zu klein ist. Das hat aber auch nichts geändert.
Erkennt jemant, woran das liegen könnte? Die App hat bisher nur eine Activity, daher poste ich fix xml- und java- Code. Das komplette Projekt (inklusive apk) zum Testen liegt auf:
w[orld].w[ide].w[eb].tvr-music.de/temp/Tankstatistik.zip.
Ich musste den Link etwas chiffrieren, weil ich als neuer User leider noch keine Links posten darf. Auch alle "xmins:android"- Tags aus der xml musste ich deshalb entfernen.
xml- File:
1<?xml version="1.0" encoding="utf-8"?>
2
3<ScrollView
4
5 android:layout_width="fill_parent"
6 android:layout_height="fill_parent"
7 android:background="@color/DarkOliveGreen1" >
8
9 <LinearLayout
10
11 android:layout_width="fill_parent"
12 android:layout_height="389dp"
13 android:background="@color/DarkOliveGreen1"
14 android:orientation="vertical" >
15
16 <LinearLayout
17
18 android:layout_width="fill_parent"
19 android:layout_height="wrap_content"
20 android:gravity="center"
21 android:orientation="horizontal"
22 android:layout_gravity="center_horizontal" >
23
24 <TextView
25 android:id="@+id/getankteLiterPickerText"
26 android:layout_width="wrap_content"
27 android:layout_height="wrap_content"
28 android:text="getankte Liter" />
29
30 <TextView
31 android:layout_height="wrap_content"
32 android:layout_width="wrap_content"
33 android:text=" "/>
34
35 <TextView
36 android:id="@+id/gesamtpreisPickerText"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:text="Gesamtpreis (€)" />
40 </LinearLayout>
41
42 <LinearLayout
43
44 android:layout_width="fill_parent"
45 android:layout_height="wrap_content"
46 android:gravity="center"
47 android:orientation="horizontal" >
48
49 <NumberPicker
50 android:id="@+id/LNPbigGetankteLiter"
51 android:layout_width="wrap_content"
52 android:layout_height="wrap_content"
53 android:paddingLeft="5dip"
54 android:layout_marginRight="3dip"
55 android:layout_marginBottom="50dip"
56 android:layout_marginTop="50dip">
57 </NumberPicker>
58
59 <NumberPicker
60 android:id="@+id/LNPlowGetankteLiter"
61 android:layout_width="wrap_content"
62 android:layout_height="wrap_content"
63 android:layout_marginLeft="3dip"
64 android:layout_marginRight="50dip">
65 </NumberPicker>
66
67 <NumberPicker
68 android:id="@+id/LNPbigGesamtPreis"
69 android:layout_width="wrap_content"
70 android:layout_height="wrap_content"
71 android:layout_marginRight="3dip"/>
72
73 <NumberPicker
74 android:id="@+id/LNPlowGesamtPreis"
75 android:layout_width="wrap_content"
76 android:layout_height="wrap_content"
77 android:paddingRight="5dip"
78 android:layout_marginLeft="3dip"
79 android:layout_marginBottom="50dip"
80 android:layout_marginTop="50dip">
81 </NumberPicker>
82 </LinearLayout>
83
84 <LinearLayout
85
86 android:layout_width="fill_parent"
87 android:layout_height="wrap_content"
88 android:gravity="center"
89 android:orientation="vertical" >
90
91 <Button
92 android:id="@+id/LBpreisProLiter"
93 style="?android:attr/buttonStyleSmall"
94 android:layout_width="wrap_content"
95 android:layout_height="wrap_content"
96 android:layout_marginBottom="5dip"
97 android:text="berechne Preis pro Liter">
98 </Button>
99
100 <TextView
101 android:id="@+id/LTVpreisProLiter"
102 android:layout_width="wrap_content"
103 android:layout_height="wrap_content"
104 android:text="Preis pro Liter">
105 </TextView>
106
107 </LinearLayout>
108
109 </LinearLayout>
110
111</ScrollView>
2
3<ScrollView
4
5 android:layout_width="fill_parent"
6 android:layout_height="fill_parent"
7 android:background="@color/DarkOliveGreen1" >
8
9 <LinearLayout
10
11 android:layout_width="fill_parent"
12 android:layout_height="389dp"
13 android:background="@color/DarkOliveGreen1"
14 android:orientation="vertical" >
15
16 <LinearLayout
17
18 android:layout_width="fill_parent"
19 android:layout_height="wrap_content"
20 android:gravity="center"
21 android:orientation="horizontal"
22 android:layout_gravity="center_horizontal" >
23
24 <TextView
25 android:id="@+id/getankteLiterPickerText"
26 android:layout_width="wrap_content"
27 android:layout_height="wrap_content"
28 android:text="getankte Liter" />
29
30 <TextView
31 android:layout_height="wrap_content"
32 android:layout_width="wrap_content"
33 android:text=" "/>
34
35 <TextView
36 android:id="@+id/gesamtpreisPickerText"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:text="Gesamtpreis (€)" />
40 </LinearLayout>
41
42 <LinearLayout
43
44 android:layout_width="fill_parent"
45 android:layout_height="wrap_content"
46 android:gravity="center"
47 android:orientation="horizontal" >
48
49 <NumberPicker
50 android:id="@+id/LNPbigGetankteLiter"
51 android:layout_width="wrap_content"
52 android:layout_height="wrap_content"
53 android:paddingLeft="5dip"
54 android:layout_marginRight="3dip"
55 android:layout_marginBottom="50dip"
56 android:layout_marginTop="50dip">
57 </NumberPicker>
58
59 <NumberPicker
60 android:id="@+id/LNPlowGetankteLiter"
61 android:layout_width="wrap_content"
62 android:layout_height="wrap_content"
63 android:layout_marginLeft="3dip"
64 android:layout_marginRight="50dip">
65 </NumberPicker>
66
67 <NumberPicker
68 android:id="@+id/LNPbigGesamtPreis"
69 android:layout_width="wrap_content"
70 android:layout_height="wrap_content"
71 android:layout_marginRight="3dip"/>
72
73 <NumberPicker
74 android:id="@+id/LNPlowGesamtPreis"
75 android:layout_width="wrap_content"
76 android:layout_height="wrap_content"
77 android:paddingRight="5dip"
78 android:layout_marginLeft="3dip"
79 android:layout_marginBottom="50dip"
80 android:layout_marginTop="50dip">
81 </NumberPicker>
82 </LinearLayout>
83
84 <LinearLayout
85
86 android:layout_width="fill_parent"
87 android:layout_height="wrap_content"
88 android:gravity="center"
89 android:orientation="vertical" >
90
91 <Button
92 android:id="@+id/LBpreisProLiter"
93 style="?android:attr/buttonStyleSmall"
94 android:layout_width="wrap_content"
95 android:layout_height="wrap_content"
96 android:layout_marginBottom="5dip"
97 android:text="berechne Preis pro Liter">
98 </Button>
99
100 <TextView
101 android:id="@+id/LTVpreisProLiter"
102 android:layout_width="wrap_content"
103 android:layout_height="wrap_content"
104 android:text="Preis pro Liter">
105 </TextView>
106
107 </LinearLayout>
108
109 </LinearLayout>
110
111</ScrollView>
java-code
1package de.mic.tankstatistik;
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.view.Menu;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.widget.Button;
9import android.widget.EditText;
10import android.widget.NumberPicker;
11import android.widget.SeekBar;
12import android.widget.SeekBar.OnSeekBarChangeListener;
13import android.widget.TextView;
14
15public class StartScreen extends Activity implements OnClickListener
16{
17
18 private NumberPicker bigLiterNumberPicker;
19 private NumberPicker lowLiterNumberPicker;
20 private NumberPicker bigGesamtpreisNumberPicker;
21 private NumberPicker lowGesamtpreisNumberPicker;
22
23 private Button preisProLiterButton;
24 private TextView preisProLiterTextView;
25
26 private double gesamtPreis;
27 private double getankteLiter;
28
29 @Override
30 public void onCreate(Bundle savedInstanceState)
31 {
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.activity_start_screen);
34
35 bigLiterNumberPicker = (NumberPicker)findViewById(R.id.LNPbigGetankteLiter);
36 bigLiterNumberPicker.setMaxValue(65);
37 bigLiterNumberPicker.setMinValue(0);
38 bigLiterNumberPicker.setWrapSelectorWheel(true);
39 lowLiterNumberPicker = (NumberPicker)findViewById(R.id.LNPlowGetankteLiter);
40 lowLiterNumberPicker.setMaxValue(99);
41 lowLiterNumberPicker.setMinValue(0);
42 lowLiterNumberPicker.setWrapSelectorWheel(true);
43
44 bigGesamtpreisNumberPicker = (NumberPicker)findViewById(R.id.LNPbigGesamtPreis);
45 bigGesamtpreisNumberPicker.setMaxValue(130);
46 bigGesamtpreisNumberPicker.setMinValue(0);
47 bigGesamtpreisNumberPicker.setWrapSelectorWheel(true);
48 lowGesamtpreisNumberPicker = (NumberPicker)findViewById(R.id.LNPlowGesamtPreis);
49 lowGesamtpreisNumberPicker.setMaxValue(99);
50 lowGesamtpreisNumberPicker.setMinValue(0);
51 lowGesamtpreisNumberPicker.setWrapSelectorWheel(true);
52
53 preisProLiterButton = (Button)findViewById(R.id.LBpreisProLiter);
54 preisProLiterTextView = (TextView)findViewById(R.id.LTVpreisProLiter);
55
56 preisProLiterButton.setOnClickListener(this);
57
58 }
59
60
61 @Override
62 public boolean onCreateOptionsMenu(Menu menu)
63 {
64 getMenuInflater().inflate(R.menu.activity_start_screen, menu);
65 return true;
66 }
67
68 public void onClick(View v)
69 {
70 // TODO Auto-generated method stub
71 if ( v == preisProLiterButton)
72 {
73 getankteLiter = bigLiterNumberPicker.getValue();
74 getankteLiter += ((double)lowLiterNumberPicker.getValue()) / 100;
75
76 gesamtPreis = bigGesamtpreisNumberPicker.getValue();
77 gesamtPreis += ((double)lowGesamtpreisNumberPicker.getValue()/100);
78
79 if (0 == getankteLiter )
80 {
81 preisProLiterTextView.setText("gib die Anzahl getankter Liter ein");
82 }
83
84 else
85 {
86 double preisProLiter;
87
88 preisProLiter = gesamtPreis/getankteLiter;
89 preisProLiter = (double)Math.round(preisProLiter*1000)/1000; //runden auf 2. Stelle nach dem Komma
90
91 preisProLiterTextView.setText(""+preisProLiter+" €");
92 }
93 }
94 }
95
96}
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.view.Menu;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.widget.Button;
9import android.widget.EditText;
10import android.widget.NumberPicker;
11import android.widget.SeekBar;
12import android.widget.SeekBar.OnSeekBarChangeListener;
13import android.widget.TextView;
14
15public class StartScreen extends Activity implements OnClickListener
16{
17
18 private NumberPicker bigLiterNumberPicker;
19 private NumberPicker lowLiterNumberPicker;
20 private NumberPicker bigGesamtpreisNumberPicker;
21 private NumberPicker lowGesamtpreisNumberPicker;
22
23 private Button preisProLiterButton;
24 private TextView preisProLiterTextView;
25
26 private double gesamtPreis;
27 private double getankteLiter;
28
29 @Override
30 public void onCreate(Bundle savedInstanceState)
31 {
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.activity_start_screen);
34
35 bigLiterNumberPicker = (NumberPicker)findViewById(R.id.LNPbigGetankteLiter);
36 bigLiterNumberPicker.setMaxValue(65);
37 bigLiterNumberPicker.setMinValue(0);
38 bigLiterNumberPicker.setWrapSelectorWheel(true);
39 lowLiterNumberPicker = (NumberPicker)findViewById(R.id.LNPlowGetankteLiter);
40 lowLiterNumberPicker.setMaxValue(99);
41 lowLiterNumberPicker.setMinValue(0);
42 lowLiterNumberPicker.setWrapSelectorWheel(true);
43
44 bigGesamtpreisNumberPicker = (NumberPicker)findViewById(R.id.LNPbigGesamtPreis);
45 bigGesamtpreisNumberPicker.setMaxValue(130);
46 bigGesamtpreisNumberPicker.setMinValue(0);
47 bigGesamtpreisNumberPicker.setWrapSelectorWheel(true);
48 lowGesamtpreisNumberPicker = (NumberPicker)findViewById(R.id.LNPlowGesamtPreis);
49 lowGesamtpreisNumberPicker.setMaxValue(99);
50 lowGesamtpreisNumberPicker.setMinValue(0);
51 lowGesamtpreisNumberPicker.setWrapSelectorWheel(true);
52
53 preisProLiterButton = (Button)findViewById(R.id.LBpreisProLiter);
54 preisProLiterTextView = (TextView)findViewById(R.id.LTVpreisProLiter);
55
56 preisProLiterButton.setOnClickListener(this);
57
58 }
59
60
61 @Override
62 public boolean onCreateOptionsMenu(Menu menu)
63 {
64 getMenuInflater().inflate(R.menu.activity_start_screen, menu);
65 return true;
66 }
67
68 public void onClick(View v)
69 {
70 // TODO Auto-generated method stub
71 if ( v == preisProLiterButton)
72 {
73 getankteLiter = bigLiterNumberPicker.getValue();
74 getankteLiter += ((double)lowLiterNumberPicker.getValue()) / 100;
75
76 gesamtPreis = bigGesamtpreisNumberPicker.getValue();
77 gesamtPreis += ((double)lowGesamtpreisNumberPicker.getValue()/100);
78
79 if (0 == getankteLiter )
80 {
81 preisProLiterTextView.setText("gib die Anzahl getankter Liter ein");
82 }
83
84 else
85 {
86 double preisProLiter;
87
88 preisProLiter = gesamtPreis/getankteLiter;
89 preisProLiter = (double)Math.round(preisProLiter*1000)/1000; //runden auf 2. Stelle nach dem Komma
90
91 preisProLiterTextView.setText(""+preisProLiter+" €");
92 }
93 }
94 }
95
96}
— geändert am 22.10.2012, 10:40:33
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.