2016-06-09 1 views
0

Привет Я разрабатываю приложение для Android, в котором я использую просмотр списка с фрагментом диалога. Я также попытался установить пустой вид для своего списка. Все работает нормально, только просмотр списка списка уменьшается после отображения пустого представления. Я пробовал его следующими способами:Android list view с пустым состоянием сокращает корневой вид

View emptyView = inflater.inflate(R.layout.no_result_found_layout, null, false); 
    ViewGroup viewGroup= (ViewGroup)countryListView.getParent(); 
    viewGroup.addView(emptyView, countryListView.getLayoutParams()); 
    countryListView.setEmptyView(emptyView); 

Я пробовал через xml также.

<LinearLayout 
     android:id="@+id/header_llt" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/size_100" 
     android:background="@color/action_bar_color" 
     android:elevation="3dp" 
     android:orientation="vertical"> 

     <com.newActivity.views.UbuntuMediumTextView 
      android:id="@+id/header_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:layout_margin="@dimen/margin_10" 
      android:text="@string/select_country_hint_text" 
      android:textColor="@color/white" 
      android:textSize="@dimen/text_size_18" 
      android:textStyle="bold" /> 

     <EditText 
      android:id="@+id/inputSearch" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/margin_10" 
      android:layout_marginLeft="@dimen/margin_10" 
      android:layout_marginRight="@dimen/margin_10" 
      android:drawableLeft="@drawable/abc_ic_search_api_mtrl_alpha" 
      android:drawablePadding="@dimen/view_padding_normal" 
      android:hint="@string/search_country_hint_text" 
      android:inputType="textVisiblePassword" 
      android:textColor="@color/white" 
      android:textColorHighlight="@color/white_transparent" 
      android:textColorHint="@color/white_transparent" 
      android:textSize="@dimen/text_size_16" /> 

    </LinearLayout> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/white"></ListView> 

    <TextView 
     android:id="@+id/empty_tv" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="@string/no_result_found" 
     android:textColor="@color/text_color_gray_light" 
     android:textSize="@dimen/text_size_16" 
     android:visibility="gone"> 

    </TextView> 

</LinearLayout> 

Есть ли способ, чтобы сохранить ширину просмотра списка после добавления пустого взгляда. Нужна помощь. Спасибо

+0

попытаться установить макет param для listview – Mehta

ответ

0

Установите их в XML, что-то вроде этого:

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

    <ListView 
     android:id="@+id/mainListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <TextView 
     android:id="@+id/emptyListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="THE LIST IS EMPTY!" 
     android:visibility="gone" /> 

</LinearLayout> 

А потом:

ListView yourListView = (ListView) findViewById(R.id.yourListView); 
yourListView.setEmptyView(findViewById(R.id.emptyListView)); 
+0

Я тоже это пробовал. Но такой же результат. Мой список находится внутри диалогового окна – nilkash

+0

Это должно определенно работать. Я подозреваю, что вы использовали неправильные значения layout_width/height. Проводка вашего XML-кода поможет. – earthw0rmjim

0

Я думаю, что вы должны изменить макет Params из диалогового окна, добавьте это в вашем диалоге код фрагмента

@Override 
public void onStart() 
{ 
    super.onStart(); 

    Dialog dialog = getDialog(); 
    if (dialog != null) 
    { 
     int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.70); 
     int width = (int) (getResources().getDisplayMetrics().widthPixels * 0.80); 
     dialog.getWindow().setLayout(width, height); 
    } 
} 
0

Если вы хотите показать пустой вид, когда нет данных, вы должны установить пустой вид на свой личный й вид

<TextView android:id="@android:id/empty" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="No Results" /> 


listView.setEmptyView(findViewById(android.R.id.empty)); 
+0

обратите внимание на андроид: id = "@ android: id/empty" –

0

От Android Documentation

View.GONE Этот вид является невидимым, и он не занимает никакого пространства для целей компоновки.

View.INVISIBLE Этот вид невидим, но он по-прежнему занимает пространство для целей макета.

Так что если вы измените android:visibility="gone" на android:visibility="invisible" вид будет не виден, но по-прежнему занимает пространство.

0

Ваша проблема не из-за «пустого представления». Это потому, что список is пустой. Диалог заставит список сжиматься до минимально возможной высоты, даже если вы установили высоту match_parent. Чтобы подтвердить это, вы можете удалить emptyView и посмотреть, что произойдет.

Решение находится в ответе, который я написал для другого вопроса. https://stackoverflow.com/a/44165565/3175580