2016-08-12 3 views
0

Перед лицом ситуации я изо всех сил пытаюсь решить.Android Widget Стратегия видимости

У меня в моем макете 2 виджета. Один ImageView и один ProgressBar (Неопределенный).

Я хочу показать прогрессбар до загрузки изображения ImageView.

Проблема заключается в том, что ImageView заполняет всю область, а Progressbar имеет определенный размер. Когда я устанавливаю видимость progressbar на INVISIBLE или GONE, индикатор прогресса больше не отображается, но ее размер по-прежнему заполняет некоторую область, которая делает Imageview не заполнением всей области.

Как установить индикатор прогресса невидимым и поставить ImageView сверху?

Layout

<LinearLayout 
    android:id="@+id/linear_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/bck_card_layout" 
    android:orientation="vertical" 
    android:padding="2dp" 
    android:weightSum="1"> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:drawableEnd="@drawable/ic_medal" 
     android:drawablePadding="12dp" 
     android:fontFamily="sans-serif-light" 
     android:paddingBottom="8dp" 
     android:paddingEnd="12dp" 
     android:paddingStart="12dp" 
     android:paddingTop="8dp" 
     android:singleLine="true" 
     android:textColor="@color/textPrimary" 
     android:textSize="@dimen/text_regular" /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="2dp" 
     android:background="@color/colorAccent" /> 


    <ProgressBar 
     android:id="@+id/card_progressbar" 
     android:visibility="visible" 
     android:layout_gravity="center_horizontal|center_vertical" 
     android:layout_width="30dp" 
     android:layout_height="30dp" 
     android:indeterminate="true" /> 


    <ImageView 
     android:id="@+id/image" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:scaleType="centerCrop" /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="2dp" 
     android:background="@color/colorAccent" /> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingEnd="12dp" 
     android:paddingStart="12dp"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="start|center_vertical" 
      android:fontFamily="sans-serif-light" 
      android:paddingBottom="6dp" 
      android:paddingTop="6dp" 
      android:text="@string/lunch_per_kilo" 
      android:textColor="@color/textPrimary" 
      android:textSize="@dimen/text_regular" /> 

     <TextView 
      android:id="@+id/price" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="end|center_vertical" 
      android:ellipsize="start" 
      android:paddingStart="116dp" 
      android:singleLine="true" 
      android:textColor="@color/textSecondary" 
      android:textSize="@dimen/text_xlarge" 
      android:textStyle="bold" /> 
    </FrameLayout> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="2dp" 
     android:background="@color/colorAccent" /> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingEnd="12dp" 
     android:paddingStart="12dp"> 

     <TextView 
      android:id="@+id/valid_until" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="start|center_vertical" 
      android:drawablePadding="8dp" 
      android:drawableStart="@drawable/ic_flash" 
      android:fontFamily="sans-serif-light" 
      android:gravity="center_vertical" 
      android:includeFontPadding="false" 
      android:paddingBottom="8dp" 
      android:paddingTop="8dp" 
      android:textColor="@color/textPrimary" 
      android:textSize="@dimen/text_small" 
      android:textStyle="italic" /> 

     <TextView 
      android:id="@+id/like_counter" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="end|center_vertical" 
      android:drawablePadding="8dp" 
      android:drawableStart="@drawable/ic_heart_24dp" 
      android:fontFamily="sans-serif-thin" 
      android:singleLine="true" 
      android:textColor="@color/textSecondary" 
      android:textSize="@dimen/text_regular" /> 
    </FrameLayout> 
</LinearLayout> 

ответ

0

Вы должны попытаться использовать FrameLayout, которые содержат внутри ImageView и ProgressBar.

<FrameLayout 
android:layout_width="match_parent" 
android:layout_height="0dp" 
android:layout_weight="1"> 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:scaleType="centerCrop" /> 

<ProgressBar 
    android:id="@+id/card_progressbar" 
    android:visibility="visible" 
    android:layout_gravity="center_horizontal|center_vertical" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:indeterminate="true" /> 

</FrameLayout> 

Теперь вы можете скрыть и показать ProgressBar.

+0

Моя основная группа просмотра - это FrameLayout, но внутри нее у меня есть LinearLayout, где находится моя панель прогресса. –

+0

мог бы опубликовать ваш xml? – cisekluke

+0

уверен, я отредактировал свой вопрос и включил макет –