2016-08-12 66 views
0

我正面臨着我正在努力解決的情況。Android Widget可視性策略

我在我的佈局2小部件。一個ImageView和一個ProgressBar(不確定)。

我想顯示進度條,直到我的ImageView圖像加載。

問題是ImageView填充所有區域,Progressbar有一個特定的大小。當我將進度條可見性設置爲INVISIBLE或GONE時,進度條不再出現,但她的大小仍然填充某個區域,使Imageview未填滿所有區域。

如何設置進度欄不可見並將ImageView放在頂部?

佈局

<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和進度內。

<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

我的主ViewGroup是一個FrameLayout,但裏面有一個LinearLayout,我的進度條在裏面。 –

+0

你可以發佈你的XML? – cisekluke

+0

當然,我編輯我的問題,並已包括佈局 –