Как добавить кнопку в PreferenceScreen - PullRequest
106 голосов
/ 23 апреля 2010

Есть ли способ добавить кнопку внизу экрана настроек и заставить их работать правильно при прокрутке?

Ответы [ 12 ]

0 голосов
/ 28 января 2017

Ниже приведено простое решение для добавления нажимаемой кнопки на экран настроек. Это легко сделать, потому что в настройках уже зарезервировано место в android: widgetLayout и кнопка может передавать клики с помощью android: onClick.

Сначала создайте файл button.xml с содержанием

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
    android:text="BUTTON"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:onClick="onButtonClick"/>
</LinearLayout>

Теперь в ваших предпочтениях.xml добавьте предпочтение

<Preference
    android:key="button"
    android:title="Title"
    android:summary="Summary"
    android:widgetLayout="@layout/button" />

Ваша PreferenceActivity теперь должна содержать только участника onButtonClick

public class MainActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    addPreferencesFromResource(R.xml.main_preferences);


}

public void onButtonClick(View v) {
    Log.d("Button", "Yeah, button was clicked");
}
}
0 голосов
/ 03 декабря 2014

Пользовательское представление в Preference Activity это поможет добавить пользовательское представление в PreferenceActivity в Android.

Создайте main.xml, единственное необходимое представление - это ListView с идентификатором: android:id="@android:id/list".

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:weightSum="1">
        <ListView 
            android:id="@android:id/list" 
            android:layout_weight="1"
            android:layout_width="fill_parent"
                android:layout_height="0dp">
        </ListView>
        <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

Создать CustomPreferenceActivity.java

public class CustomPreferenceActivity extends PreferenceActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                addPreferencesFromResource(R.xml.settings);

                //setup any other views that you have
                TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("View Added");
        }
}
...