Hermann S.
- Forum-Beiträge: 45
11.12.2011, 00:46:50 via Website
11.12.2011 00:46:50 via Website
Hallo, ich möchte mir einen Color-Picker mit einer Seekbar realisieren. Dafür lege ich erst mal ein Farbfeld als Seekbar-Hintergrund (Siehe Beispiel);
Leider erhalte ich für "xPosEnd = seekBar.getWidth();" eine 0. Die Breite wird im SeekBar Listener aber richtig geholt. Vermutlich ist die View zu dem Zeitpunkt noch nicht gezeichnet, daher ist der Wert für xPosEnd nicht bekannt. Habe leider keine Idee, wie man die Breite sonst bestimmen könnte. Hätte jemand einen Tipp für mich?
1...
2convertView = mInflater.inflate(R.layout.farbe, null);
3 seekBar = (SeekBar)convertView.findViewById(R.id.farbe_sb_seek);
4
5 float xPosStart = 0.f;
6 float yPosStart = 0.f;
7 float xPosEnd = seekBar.getWidth();
8 float yPosEnd = 0.f;
9 LinearGradient test = new LinearGradient(
10 xPosStart, yPosStart, xPosEnd, yPosEnd,
11 new int[] { 0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFF00FFFF, 0xFFFF0000, 0xFFFF00FF, 0xFFFFFF00, 0xFFFFFFFF},
12 null, TileMode.CLAMP);
13 ShapeDrawable shape = new ShapeDrawable(new RectShape());
14 shape.getPaint().setShader(test);
15
16 seekBar.setProgressDrawable( (Drawable)shape );
17 seekBar.setOnSeekBarChangeListener(seekBarChangeListener);
18...
2convertView = mInflater.inflate(R.layout.farbe, null);
3 seekBar = (SeekBar)convertView.findViewById(R.id.farbe_sb_seek);
4
5 float xPosStart = 0.f;
6 float yPosStart = 0.f;
7 float xPosEnd = seekBar.getWidth();
8 float yPosEnd = 0.f;
9 LinearGradient test = new LinearGradient(
10 xPosStart, yPosStart, xPosEnd, yPosEnd,
11 new int[] { 0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFF00FFFF, 0xFFFF0000, 0xFFFF00FF, 0xFFFFFF00, 0xFFFFFFFF},
12 null, TileMode.CLAMP);
13 ShapeDrawable shape = new ShapeDrawable(new RectShape());
14 shape.getPaint().setShader(test);
15
16 seekBar.setProgressDrawable( (Drawable)shape );
17 seekBar.setOnSeekBarChangeListener(seekBarChangeListener);
18...
Leider erhalte ich für "xPosEnd = seekBar.getWidth();" eine 0. Die Breite wird im SeekBar Listener aber richtig geholt. Vermutlich ist die View zu dem Zeitpunkt noch nicht gezeichnet, daher ist der Wert für xPosEnd nicht bekannt. Habe leider keine Idee, wie man die Breite sonst bestimmen könnte. Hätte jemand einen Tipp für mich?
— geändert am 11.12.2011, 00:50:27
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.