Android EditText на экране настроек - PullRequest
1 голос
/ 21 августа 2011

Можно ли поместить элемент EditText на экран настроек?

Я хочу сделать это, чтобы позволить быстрый поиск большого ListPreference, набрав, но не хотите сохранять содержимое окна поиска? Это возможно, или стандартные элементы управления макетом не разрешены на экранах предпочтений.

Цель состоит в том, чтобы предоставить средство выбора часового пояса и сохранения его в качестве предпочтения. Одного использования ListViewPrefernce недостаточно из-за огромного количества часовых поясов, которые необходимо прокручивать. Следовательно, я хотел бы предоставить поле ввода типа «гипер-поиск», где пользователь может ввести часовой пояс или его часть, чтобы сузить выбор списка вниз.

1 Ответ

1 голос
/ 24 августа 2011

Что вы можете сделать, это просто сделать стандартную настройку, которая покажет диалоговое окно, содержащее EditText, и добавить ontextchangelistener:

searchET.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub              
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub              
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
        }
    });

, а что касается результатов поиска, я не знаю,Я никогда раньше не пробовал ничего подобного, но похоже, что это сработало бы для вас, и вам нужно было бы выяснить, какой код необходим для выполнения самого поиска, но это добавило бы начальную функциональность.

РЕДАКТИРОВАТЬ: Под стандартным предпочтением я имею в виду в XML:

<Preference
    android:title="Time Zone"
    android:summary="Choose your time zone"
    android:key="timeZone"/>

И в вашей PreferenceActivity добавить следующее:

Preference timeZone = (Preference)findPreference("timeZone");
     timeZone.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference arg0) {
                showDialog(1);
                return false;
            }
        });



@Override
    protected Dialog onCreateDialog(int id) {

    switch (id) {       

    case 1: 
        final EditText searchET = new EditText(this);
//do the searchET.addTextChangedListener here
                 return new AlertDialog.Builder(this)
.setTitle("Choose Time Zone")
.setView(showAppString)
.setPositiveButton(new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface arg0, int arg1) {
    //save the time zone to sharedPreferences
SharedPreferences pref = PreferenceManager.getDefaultSharedPreference(this);
SharedPreferences.Editor editor = pref.edit();
editor.putString("TIME_ZONE", TZ.toString());

}//closes the onClick
})//closes the onclicklistener
.show();
}//closes the switch

}//closes the oncreatedialog

Хотя, яЯ думаю, что вы могли бы на самом деле просто использовать EditTextPreference, а затем добавитьTextChangedListner в EditTextPreference, так как я думаю, что он наследует все от EditTexts.Я не позитивен, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...