PreferenceScreen Farbe ändern

  • Antworten:11
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 50

15.09.2014, 21:47:31 via Website

Hallo,

ich habe wieder mal ein kleines Problemchen.
Für die Profis unter Euch sicher eine Lappalie, für mich gerade unlösbar.

Ich habe wie hier beschrieben:
klickme
einen Screen wo ich einige Dinge meiner kleinen App einstellbar machen möchte.
Soweit funktioniert das auch erst mal und soweit habe ich das auch verstanden.

Leider sieht es eben auch genau so aus wie auf den Bildern auf der Seite ganz unten
und passt optisch überhaupt nicht zur MainActivity, welche einen schwarzen Hintergrund hat.
Wie kann ich denn so etwas beim dem PreferenceScreen einstellen?

Ich bedanke mich schon mal für Eure Hilfe und Tipps.

Ein weiteres kleines Anliegen hätte ich noch.
Wenn soweit alles andere läuft, würde ich gerne eine Zeit (Integer) in 0.1 Sekundenschritten
durch einen Slider einstellbar machen.
Um dies zu lösen brauch ich aber ein Beispiel, so schaffe ich das nicht.
Falls da also noch einer einen guten Link für mich hat, wäre ich auch sehr dankbar.

Gruß
Jürgen

Antworten
  • Forum-Beiträge: 11.137

15.09.2014, 21:55:53 via App

Hallo Jürgen,
Für das Design der MainActiviy wirst du doch eine Theme erstellt haben .

Dieses kannst du dann so setzten http://stackoverflow.com/questions/10228482/how-to-apply-theme-to-preferencescreen-elements-of-a-preferencecategory

Diese "speed" weiss ich nicht was das sein soll.
Eine Variabe oder einstellung die grlemacht werden soll?
Und was meinst du mit Slider?

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 50

15.09.2014, 22:06:30 via Website

Hallo,
und erst mal vielen Dank für die schnelle Antwort.

Nein ich habe kein eigenes Theme erstellt, so umfangreich ist die App ja nicht.
In der MainActivity (das ist bis jetzt die einzige) ist ein Relativ Layout und da ist eben die Hintergrundfarbe festgelegt.

Heißen die Schieberegler nicht Slider? Kann mich ja irren. Könnte auch Seekbar heißen bei Android.
Nun das beschreibe ich noch mal so:
Ein Schieber soll eine Zeit einstellbar machen.
Nämlich die Zeit wie lange das Handy vibriert wenn man einen bestimmten Button drückt.
Allerdings sind Sekundenschritte dafür zu groß und Millisekunden zu klein.
Also nehme ich einen Wert 12 (entspricht 1,2 Sekunden) und multipliziere den mit 100 und erhalte die gewünschen Millisekunden 1200.
In der Anzeige sollte aber 1.2 stehen, das Komma ist also nur ein optischer Trick.
Geht das so?

Gruß
Jürgen

Antworten
  • Forum-Beiträge: 11.137

15.09.2014, 22:19:33 via App

Ach so :)

http://javatechig.com/android/android-seekbar-example Tut für die Seekbar.

Leider kannst du diese nicht so einfach in einfach in eine Preference einfügen.

Entweder du nimmst eine normale leere Preference und versuchst da deine Seekbar draufzuklatschen oder du reagierst auf den click Event der Preference und öffnest einen Dialog.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 50

15.09.2014, 22:30:11 via Website

oder du reagierst auf den click Event der Preference und öffnest einen Dialog.

Ja das wäre so schon ok.
Versuche ich demnächst mal, Danke.

Was ich aber immer noch nicht weiß und das ist ja nun mein derzeitiges Problem,
wie bekomme ich den Hintergrund der Preference geändert?
Ein eigenes Theme habe ich ja nicht und wenn ich eines machen müsste,
welchen Parameter müsste ich denn dann überschreiben?

Gruß
Jürgen

Antworten
  • Forum-Beiträge: 11.137

15.09.2014, 22:32:20 via App

Wenn dein Hintergrund schwart ist dann kannst du das entweder mit setBackgroundColor machen oder mit Themes.
Bei den Themes lies dir bitte die Aleitung auf d.android.com durch. Dort steht alles wichtige drin.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 50

17.09.2014, 22:22:33 via Website

Hallo,

ich habe mich mal versucht einzulesen.
Und bin auch schon etwas weiter gekommen.
Aber so richtig gut habe ich das leider noch nicht kapiert.

Mit Hilfe eines eigenen Style, kann ich schon mal den Hintergrund passend machen und
auch die Schrift.

    <style name="CustomTheme" parent="AppTheme">
    <item name="android:windowBackground">@color/custom_theme_color</item>
    <item name="android:colorBackground">@color/custom_theme_color</item>
    <item name="android:textColor">@color/custom_theme_color_text</item>
    <item name="android:textColorSecondary">@color/custom_theme_color_text_secondary</item>
</style>

Aber da gibt es z.B noch eine Checkbox, deren Farbe, Größe und Linienstärke auch noch
angepasst werden müsste.

Außerdem wird auch noch ein Dialog geöffnet, welcher wieder die ursprünglichen Farben
weiß / blau hat.
Den müsste ich auch noch ändern aber der braucht nun wieder eine etwas andere Farbe als schwarz.

Da ich das absolut nicht hin bekomme, ersuche ich noch mal um Hilfe hier.

Gruß
Jürgen

Antworten
  • Forum-Beiträge: 50

22.09.2014, 21:42:11 via Website

Ok, leider keine Hilfe aber was nicht ist kann ja noch werden.

Dafür habe ich heute eine neue Frage.
Mein Preference Screen wird ja komplett in einer xml Datei angelegt.
Siehe dazu Link oben.
Gibt es jetzt eine Möglichkeit direkt auf ein Ereignis zu reagieren solange der Preferece Screen angezeigt wird?

(Bsp. zu Erklärung:
Es gibt eine Seekbar deren Einstellung die Länge der Vibration einstellt.
Kann ich jetzt das Gerät vibrieren lassen wenn sich die Position des Schiebers ändert?)

Gruß
Jürgen

Antworten
  • Forum-Beiträge: 50

22.09.2014, 21:48:39 via Website

Danke, schau ich mir an.

Edit: habe geschaut.

final SeekBar sk=(SeekBar) findViewById(R.id.seekBar1); 

In der Zeile lauert schon mein erstes Problem.
Was trage ich hier ein für R.id.seekBar1 ?

<SeekBarPreference
android:defaultValue="25"
android:max="100"
android:key="prefSeekBarVib1"
android:title="@string/prefVib1" >
</SeekBarPreference>

Gruß
Jürgen

— geändert am 22.09.2014, 22:03:18

Antworten
  • Forum-Beiträge: 11.137

23.09.2014, 06:41:21 via App

Ah gibts doch ne SeekbarPreference gut zu wissen.
Also da du die View als element brauchst musst du sie auf dem Layoit auch erst finden.
Bei Preferences ist das normalerweise:
grtPreferenceByName();
und in die Klammern muss dann dein Key String rein.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 50

23.09.2014, 07:18:25 via App

Ich habe es gestern noch probiert und der Seekbar einfach eine id per xml Tag verpasst. Allerdings endeten alle meine Versuche in einer Nullpointer Eception.

Die Lösung habe also noch nicht gefunden.

Gruß
Jürgen

Antworten