Я довольно новичок в разработке Android и только что наткнулся на Настройки. Я нашел PreferenceScreen
и хотел создать функциональность входа с ним. Единственная проблема, с которой я столкнулся - это то, что я не знаю, как добавить кнопку «Войти» в PreferenceScreen
.
Вот как PreferenceScreen
выглядит моя :
<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>
Кнопка должна быть прямо под двумя EditTextPreference
с.
Есть ли простое решение этой проблемы? Единственное решение, которое я нашел, не работало, потому что я использую sub PreferenceScreen
s.
Обновить:
Я понял, что могу добавить кнопки таким образом:
<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>
и файл макета ( loginButtons.xml
) выглядит так:
<?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>
Так что теперь кнопки появляются, но я не могу получить к ним доступ в коде. Я попробовал это с, findViewById()
но это возвращает ноль. Любые идеи, как я мог получить доступ к этим кнопкам?
источник
android:onClick="method"
к каждой кнопке, где метод определен в действии какpublic void method(View v)
.Ответы:
Для XML:
Тогда для Java в вашем
onCreate()
Это будет выглядеть как обычное предпочтение, только с заголовком и сводкой, поэтому оно будет выглядеть так, как будто оно принадлежит.
Изменить: я перешел на использование
@string/myCoolButton
иgetString(R.string.myCoolButton)
потому что лучше использовать ресурсы для помощи компилятора, языкового перевода и простоты изменений String.источник
android:key="key"
иfindPreference("key");
используете тот же ключ.Я полагаю, это слишком поздно. Это то, что я сделал для предпочтения кнопки.
Предпочтение в файле preference.xml в папке xml
и pref_reset_bd_button.xml в папке макета
источник
android:widgetLayout
является идеальной связью между фрагментами и предпочтениями (один или оба определены в XML). Большое спасибо. ЗдесьЯ хотел добавить ссылку Exit в настройки и смог изменить код Jakar, чтобы он работал следующим образом:
Первоначально «Preference» был «EditTextPreference», который я отредактировал вручную.
Тогда в классе:
источник
Добавить
Ниже
buttonLayout:
Кнопка доступа по:
Вы можете получить кнопку сверху или снизу экрана, поместив кнопку в RelativeLayout:
bottom_control_bar
Это сработало для меня. Я надеюсь, что смогу помочь кому-нибудь с этим фрагментом кода.
источник
Я не думаю, что есть простой способ просто добавить кнопку на экран настроек. Предпочтения ограничены:
При использовании экрана настроек вы ограничены использованием этих опций, и нет единой «кнопки-предпочтения», которую можно было бы легко использовать для ваших нужд.
Я искал похожую функциональность с добавлением кнопок на экран настроек, но, похоже, вам нужно создать собственный экран для этого, управляя изменением настроек в вашей собственной реализации.
источник
Вы можете сделать это так, чтобы получить доступ к кнопке!
Не забудьте добавить
android:id
к LinearLayout, который содержит кнопку в layoutButtons.xml , т.е.android:id="@+id/mylayout"
источник
Вы также можете настроить макет предпочтения путем переопределения
Preference.onCreateView(parent)
. В приведенном ниже примере используется анонимный внутренний класс для настройки красного цвета.Вы можете использовать эту технику, чтобы добавить кнопку в представление по умолчанию.
источник
Если кто-то попросит пользователя щелкнуть один из пунктов «Предпочтения» и обработает этот щелчок, и ваше решение будет основано
PreferenceFragmentCompat
, то вы можете сделать это:Ява:
Котлин:
источник
Создайте собственный макет для
SettingsFragment.java
ielayout_settings.xml
Затем обратитесь к файлу макета в вашем
styles.xml
:И затем, в
onViewCreated()
методе вашегоSettingsFragment.java
, вы можете использовать кнопку, как это:источник
попробуйте android: onClick = "myMethod" работает как брелок для простых событий onclick
источник
Preference
не имеетonClick
собственностиandroid:onClick
в прикрепленном виде кнопки, а не в самом предпочтении.