2014-10-27 2 views
-1

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

Вот мой код:

@Override 
     protected View onCreateDialogView() { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext); 
     SharedPreferences.Editor editor = preferences.edit(); 
     String mThemeSettings = MyVars.THEME_KEY_DEFAULT; 

     // Theme-Einstellungen 
     if (preferences.contains(MyVars.SETTING_THEME)) { 
      mThemeSettings = preferences.getString(MyVars.SETTING_THEME, yVars.THEME_KEY_DEFAULT); 
     } else { 
      editor.putString(MyVars.SETTING_THEME, mThemeSettings); 
      editor.apply(); 
     } 

     // View für Rückgabe anlegen 
     View view; 

     if (mThemeSettings.equals(MyVars.THEME_KEY_2)) { 
      view = View.inflate(mContext, R.layout.custom_list_preference_black, null); 
     } else view = View.inflate(mContext, R.layout.custom_list_preference_white, null); 

     mDialogTitle = getDialogTitle(); 
     if (mDialogTitle == null) mDialogTitle = getTitle(); 
     ((TextView) view.findViewById(R.id.dialog_title)).setText(mDialogTitle); 

     ListView list = (ListView) view.findViewById(android.R.id.list); 


     ArrayAdapter<CharSequence> adapter; 
     if (mThemeSettings.equals(MyVars.THEME_KEY_2)) { 

      adapter = new ArrayAdapter<CharSequence>(
        getContext(), R.layout.btn_radio_black, 
        getEntries()); 
     } else { 
      adapter = new ArrayAdapter<CharSequence>(
        getContext(), R.layout.btn_radio_white, 
        getEntries()); 
     } 

     // Adapter setzen 
     list.setAdapter(adapter); 
     // Achtung: vorher Clickable setzen, sonst werden die Vorgaben nicht angenommen... 
     list.setClickable(true); 
     list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     list.setItemChecked(findIndexOfValue(mPath), true); 
     list.setOnItemClickListener(this); 

     return view; 
    } 


    @Override 
    protected void onPrepareDialogBuilder(@NonNull Builder builder) { 
     super.onPrepareDialogBuilder(builder); 

     // Holo-Titel unsichtbar machen 
     builder.setTitle(null); 

     mMediaPlayer = new MediaPlayer(); 
     mEntries = getEntries(); 
     mEntryValues = getEntryValues(); 

     builder.setPositiveButton(mContext.getString(R.string.btn_ok), this); 
     builder.setNegativeButton(mContext.getString(R.string.btn_cancel), this); 

    } 

и 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" 
       android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="500dp" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/dialog_title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="16dp" 
      android:textColor="@color/white" 
      android:textSize="22sp"/> 

     <View 
      android:layout_width="match_parent" 
      android:layout_height="8dp" 
      android:background="@color/blue_app_color"/> 

     <ListView 
      android:id="@android:id/list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:listSelector="@color/blue_app_color"/> 

    </LinearLayout> 

</LinearLayout> 

enter image description here

enter image description here

ответ

0

Что вы ожидаете, когда у вас есть фиксированный диапазон ListView?

Либо использовать вес или сделать ваш ListView занять оставшуюся часть экрана с:

<ListView 
    ... 
    android:layout_height="match_parent" 
    .../> 
+0

Ahh, я просто скопировал неправильный код: -/Кнопки выйти из экрана, когда я сопрягать родитель ListView. .. –

+2

@MartinPfeffer обновите свой вопрос с помощью * правильного * кода. – Simas

Смежные вопросы