我正面临着一个我正在努力解决的问题。
我的布局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 :(得分:0)
您应该尝试使用包含在ImageView和ProgressBar中的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。