Ich bin ziemlich neu in der Android-Entwicklung und bin gerade auf Einstellungen gestoßen. Ich fand PreferenceScreen
und wollte damit eine Login-Funktionalität erstellen. Das einzige Problem, das ich habe, ist, dass ich nicht weiß, wie ich der Schaltfläche "Anmelden" hinzufügen kann PreferenceScreen
.
So PreferenceScreen
sieht mein aus:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
...
<PreferenceScreen android:title="@string/login" android:key="Login">
<EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
<EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
</PreferenceScreen>
...
</PreferenceScreen>
Der Knopf sollte direkt unter den beiden EditTextPreference
s sein.
Gibt es eine einfache Lösung für dieses Problem? Die einzige Lösung, die ich gefunden habe, hat nicht funktioniert, weil ich Sub- PreferenceScreen
s verwende.
Aktualisieren:
Ich habe herausgefunden, dass ich Schaltflächen folgendermaßen hinzufügen kann:
<PreferenceScreen android:title="@string/login" android:key="Login">
<EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
<EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
<Preference android:layout="@layout/loginButtons" android:key="loginButtons"></Preference>
</PreferenceScreen>
und die Layoutdatei ( loginButtons.xml
) sieht folgendermaßen aus:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:weightSum="10"
android:baselineAligned="false" android:orientation="horizontal">
<Button android:text="Login" android:layout_width="fill_parent"
android:layout_weight="5" android:layout_height="wrap_content"
android:id="@+id/loginButton" android:layout_gravity="left"></Button>
<Button android:text="Password?" android:layout_width="fill_parent"
android:layout_weight="5" android:layout_height="wrap_content"
android:id="@+id/forgottenPasswordButton"></Button>
</LinearLayout>
Jetzt erscheinen die Schaltflächen, aber ich kann nicht im Code darauf zugreifen. Ich habe es mit versucht, findViewById()
aber dies gibt null zurück. Irgendwelche Ideen, wie ich auf diese Schaltflächen zugreifen könnte?
quelle
android:onClick="method"
zu jeder Schaltfläche hinzu, wobei die Methode in der Aktivität als definiert istpublic void method(View v)
.Antworten:
Für die XML:
Dann für die Java in Ihrem
onCreate()
Dies wird wie eine normale Voreinstellung mit nur einem Titel und einer Zusammenfassung angezeigt, sodass es so aussieht, als ob es dazu gehört.
Bearbeiten: Ich habe die Verwendung geändert
@string/myCoolButton
undgetString(R.string.myCoolButton)
weil es am besten ist, Ressourcen für die Compilerunterstützung, die Sprachübersetzung und die einfache Änderung von Zeichenfolgen zu verwenden.quelle
android:key="key"
undfindPreference("key");
verwenden Sie den gleichen Schlüssel.Ich nehme an, es ist zu spät. Dies ist, was ich für eine Schaltflächeneinstellung getan habe.
Die Voreinstellung in der Datei "Preference.xml" im XML-Ordner
und pref_reset_bd_button.xml im Layoutordner
quelle
android:widgetLayout
ist die perfekte Verbindung zwischen Fragmenten und und Einstellungen (eines oder beide in XML definiert). Vielen Dank. HierIch wollte den Einstellungen einen Exit-Link hinzufügen und konnte den Code von Jakar so ändern, dass er wie folgt funktioniert:
Ursprünglich war die 'Präferenz' eine 'EditTextPreference', die ich von Hand bearbeitet habe.
Dann in der Klasse:
quelle
Hinzufügen
Unten
buttonLayout:
Zugriffstaste von:
Sie können die Schaltfläche oben oder unten auf dem Bildschirm anzeigen, indem Sie die Schaltfläche in RelativeLayout einfügen:
bottom_control_bar
Das hat bei mir funktioniert. Ich hoffe, ich kann jemandem mit diesem Code helfen.
quelle
Ich glaube nicht, dass es eine einfache Möglichkeit gibt, einem Einstellungsbildschirm einfach eine Schaltfläche hinzuzufügen. Die Einstellungen sind beschränkt auf:
Während Sie einen Einstellungsbildschirm verwenden, können Sie diese Optionen nur verwenden, und es gibt keine einzige "Schaltflächeneinstellung", die für Ihre Anforderungen problemlos verwendet werden könnte.
Ich habe nach ähnlichen Funktionen gesucht, indem ich dem Einstellungsbildschirm Schaltflächen hinzugefügt habe, aber es scheint, als müssten Sie dafür einen eigenen Bildschirm erstellen und die Änderung der Einstellungen in Ihrer eigenen Implementierung verwalten.
quelle
Sie können dies so tun, um auf die Schaltfläche zuzugreifen!
Vergessen Sie nicht
android:id
, dem LinearLayout hinzuzufügen , das die Schaltfläche in layoutButtons.xml enthält , d. H.android:id="@+id/mylayout"
quelle
Sie können das Layout einer Voreinstellung auch durch Überschreiben anpassen
Preference.onCreateView(parent)
. Im folgenden Beispiel wird eine anonyme innere Klasse verwendet, um rote Einstellungen vorzunehmen.Mit dieser Technik können Sie der Standardansicht eine Schaltfläche hinzufügen.
quelle
Wenn jemand den Benutzer anweist, auf eines der Einstellungselemente und Handles zu klicken, auf die geklickt wird und auf denen Ihre Lösung basiert
PreferenceFragmentCompat
, können Sie Folgendes tun:Java:
Kotlin:
quelle
Erstellen Sie ein benutzerdefiniertes Layout für die
SettingsFragment.java
dhlayout_settings.xml
Lesen Sie dann die Layoutdatei in Ihrem
styles.xml
:Und dann können Sie in
onViewCreated()
Ihrer MethodeSettingsFragment.java
die Schaltfläche folgendermaßen verwenden:quelle
try android: onClick = "myMethod" funktioniert wie ein Zauber für einfache Onclick-Ereignisse
quelle
Preference
hat keinonClick
Eigentumandroid:onClick
in der angehängten Schaltflächenansicht, nicht in der Einstellung selbst.