当进度条显示时,它改变了我的界面设计
when progress bar show out it's changed my interface design
我原以为我的进度条是这样的:
不改变界面设计。
我的布局是这样的:
显示进度条后变为:
如您所见,它已将编辑文本和一些其他设计推到下方。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".Login">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="24dp"
android:src="@drawable/cenviro" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Email"
android:inputType="textEmailAddress"
app:met_floatingLabel="highlight" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="16dp"
android:visibility="gone"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress"
android:max="100"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Logging in..."
android:textSize="20sp"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/progressBar"/>
</RelativeLayout>
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Password"
android:inputType="textPassword"
app:met_floatingLabel="highlight" />
如何在不改变界面的情况下显示进度条,如我展示的第一张图?
从您的 xml 文件中删除 progressbar,然后在您的 java 文件中使用 progressdialog,例如
任务开始时
private ProgressDialog dialog;
dialog = new ProgressDialog(activity);
dialog.setMessage("Doing something, please wait.");
dialog.show();
结束时
if (dialog.isShowing()) {
dialog.dismiss();
}
首先,为什么你的布局父级是 RelativeLayout,然后所有内容都在 LinearLayout 中?
那么,在一个LinearLayout中,两个View是不能重叠的,所以你应该在LinearLayout之外设置ProgressBar RelativeLayout。
尝试以这种方式更改布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Login">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="16dp"
android:visibility="gone"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress"
android:max="100"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Logging in..."
android:textSize="20sp"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/progressBar"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="24dp"
android:src="@drawable/cenviro" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Email"
android:inputType="textEmailAddress"
app:met_floatingLabel="highlight" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Password"
android:inputType="textPassword"
app:met_floatingLabel="highlight" />
然后,您在 LinearLayout 中使用了无效的 android:centerInParent = "true"
。
您正在使用位于电子邮件和密码中心的进度条,这就是您的进度条变为可见然后 pt 将您的密码视图移动到密码视图下方的原因
您可以像这样使用默认进度条(根据您的异常图像)
ProgressDialog progressDialog = new ProgressDialog(activityCon);
progressDialog.setMessage("Logging In...");
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
隐藏
如果(进度对话框!= null)
progressDialog.dismiss();
希望它能解决您的问题:-)
在登录按钮下方添加此布局,并从那里删除进度条布局。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:visibility="gone"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_centerInParent="true"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress"
android:max="100"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Logging in..."
android:textSize="20sp"
android:layout_centerInParent="true"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/progressBar"/>
</RelativeLayout>
我原以为我的进度条是这样的:
不改变界面设计。
我的布局是这样的:
显示进度条后变为:
如您所见,它已将编辑文本和一些其他设计推到下方。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".Login">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="24dp"
android:src="@drawable/cenviro" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Email"
android:inputType="textEmailAddress"
app:met_floatingLabel="highlight" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="16dp"
android:visibility="gone"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress"
android:max="100"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Logging in..."
android:textSize="20sp"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/progressBar"/>
</RelativeLayout>
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Password"
android:inputType="textPassword"
app:met_floatingLabel="highlight" />
如何在不改变界面的情况下显示进度条,如我展示的第一张图?
从您的 xml 文件中删除 progressbar,然后在您的 java 文件中使用 progressdialog,例如
任务开始时
private ProgressDialog dialog;
dialog = new ProgressDialog(activity);
dialog.setMessage("Doing something, please wait.");
dialog.show();
结束时
if (dialog.isShowing()) {
dialog.dismiss();
}
首先,为什么你的布局父级是 RelativeLayout,然后所有内容都在 LinearLayout 中?
那么,在一个LinearLayout中,两个View是不能重叠的,所以你应该在LinearLayout之外设置ProgressBar RelativeLayout。
尝试以这种方式更改布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Login">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="16dp"
android:visibility="gone"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress"
android:max="100"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Logging in..."
android:textSize="20sp"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/progressBar"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="24dp"
android:src="@drawable/cenviro" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Email"
android:inputType="textEmailAddress"
app:met_floatingLabel="highlight" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="Password"
android:inputType="textPassword"
app:met_floatingLabel="highlight" />
然后,您在 LinearLayout 中使用了无效的 android:centerInParent = "true"
。
您正在使用位于电子邮件和密码中心的进度条,这就是您的进度条变为可见然后 pt 将您的密码视图移动到密码视图下方的原因
您可以像这样使用默认进度条(根据您的异常图像)
ProgressDialog progressDialog = new ProgressDialog(activityCon);
progressDialog.setMessage("Logging In...");
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
隐藏 如果(进度对话框!= null) progressDialog.dismiss();
希望它能解决您的问题:-)
在登录按钮下方添加此布局,并从那里删除进度条布局。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:visibility="gone"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_centerInParent="true"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress"
android:max="100"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Logging in..."
android:textSize="20sp"
android:layout_centerInParent="true"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/progressBar"/>
</RelativeLayout>