获取数据时,我想在应用程序的一个片段上显示一个临时的旋转进度指示器。到目前为止,我已经让它工作得很好,但当我想让常规页面内容在指示器可见时变灰时,背景是纯黑色的。我尝试在现有布局的基础上添加一个半透明黑色背景的新全屏布局,但无论我尝试什么,我都只能得到黑色背景。我也尝试过FrameLayout容器,但它只提供了100%透明的布局。
我甚至读过这篇文章,但它就是不起作用:更改progressbar android 的半透明背景色
片段xml布局文件的代码:(表是动态填充的)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.ericbatemandev.lemanskarting.view.League"
android:background="#000"
android:orientation="vertical">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/pageLoading"
android:background="@color/transparent">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="64dp"
android:gravity="center_vertical"
android:layout_marginBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pro Enduro League Standings"
android:id="@+id/leaguePageTitle"
android:layout_gravity="center"
android:padding="10dp"
android:textSize="18sp"
android:textColor="#fff"
android:background="@drawable/page_title_background"
android:textStyle="bold"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/leagueResultsTable">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="Standing"
android:id="@+id/standingLabel"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="#fff"/>
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Team Name"
android:id="@+id/teamNameLabel"
android:textColor="#fff"
android:textSize="16sp"
android:textStyle="bold"/>
<TextView
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="Points"
android:id="@+id/pointsLabel"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="#fff"/>
</TableRow>
</TableLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>
colors.xml 中的颜色
<color name="transparent">#80000000</color>
我把我片段中的布局称为:
public void showLoadingIndicator() {
RelativeLayout pageLoading = (RelativeLayout)llLayout.findViewById(R.id.pageLoading);
pageLoading.setVisibility(View.VISIBLE);
}
public void hideLoadingIndicator() {
RelativeLayout pageLoading = (RelativeLayout)llLayout.findViewById(R.id.pageLoading);
pageLoading.setVisibility(View.GONE);
}
非常感谢您的帮助!
我刚刚使用FrameLayout作为父级解决了这个问题。我以前没有做的关键事情是把RelativeLayout放在树中的最后一个,而不是第一个。布局并不完美,但我现在有了我想要的半透明效果。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.ericbatemandev.lemanskarting.view.League"
android:background="#000"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="64dp"
android:gravity="center_vertical"
android:layout_marginBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pro Enduro League Standings"
android:id="@+id/leaguePageTitle"
android:layout_gravity="center"
android:padding="10dp"
android:textSize="18sp"
android:textColor="#fff"
android:background="@drawable/page_title_background"
android:textStyle="bold"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/leagueResultsTable">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="Standing"
android:id="@+id/standingLabel"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="#fff"/>
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Team Name"
android:id="@+id/teamNameLabel"
android:textColor="#fff"
android:textSize="16sp"
android:textStyle="bold"/>
<TextView
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="Points"
android:id="@+id/pointsLabel"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="#fff"/>
</TableRow>
</TableLayout>
</ScrollView>
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/pageLoading"
android:background="@color/transparent">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar4"
android:layout_gravity="center_horizontal"
android:layout_centerInParent="true"
android:background="#00000000"/>
</RelativeLayout>