2016-08-12 8 views
0

私は解決するために苦労している状況に直面しています。Android Widgetの可視性戦略

私はレイアウト2のウィジェットを持っています。 1つのImageViewと1つのProgressBar(不定)。

ImageViewイメージが読み込まれるまでプログレスバーを表示したいとします。

問題は、ImageViewがすべての領域を満たし、プログレスバーが特定のサイズを持つことです。プログレスバーの可視性を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

あなたのImageViewのとプログレスバーの内側に含まれているでframeLayoutを使用するようにしてください。

<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

私は質問を編集してレイアウトを含めました –