2016-08-12 30 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

当然,我编辑我的问题,并已包括布局 –