我正在使用扩展Dialog
的类。它应该显示一个progressbar
元素。有时会有信息,有时没有。
progressbar
在没有消息时显示,但在有消息时不显示,我不明白为什么。
这是布局代码:
<TextView
android:id="@+id/dialog_message"
style="@style/arial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginBottom="20dp"
android:text=""
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="18sp"
/>
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="30dp"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginTop="10dp"
android:visibility="gone" />
这是java:
public void progressDialog () {
if(this.message.getText().length() > 0){
message.setVisibility(View.VISIBLE);
}else{
message.setVisibility(View.GONE);
}
progress.setVisibility(View.VISIBLE);
leftButton.setVisibility(View.GONE);
rightButton.setVisibility(View.GONE);
}
设置message
GONE
时,进度条显示;设置message
VISIBLE
时,进度条不显示。我认为该消息被某种方式隐藏了。
我已经尝试过在布局中移动它,因为这个问题可能暗示需要ProgressBar not displaying,但无济于事。
在调用progressDialog()
时如何使进度条始终显示?
编辑*****添加了完整布局xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_background"
android:orientation="vertical">
<TextView
android:id="@+id/dialog_title"
style="@style/arialBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="5dp"
android:layout_marginTop="35dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/waiting"
android:textColor="@android:color/white"
android:textSize="21sp" />
<TextView
android:id="@+id/dialog_message"
style="@style/arial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="30dp"
android:text=" "
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="20sp" />
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="30dp"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginTop="30dp"
android:visibility="gone" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="30dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/dialog_button_one"
style="@android:style/Widget.Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/purple"
android:orientation="horizontal">
<TextView
android:id="@+id/dialog_button_one_text"
style="@style/arialBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="@dimen/alert_dialog_button_margin_left_right"
android:layout_marginRight="@dimen/alert_dialog_button_margin_left_right"
android:layout_marginTop="10dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@android:color/white"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/dialog_button_two"
style="@android:style/Widget.Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="20dp"
android:background="@color/purple"
android:orientation="horizontal">
<TextView
android:id="@+id/dialog_button_two_text"
style="@style/arialBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="@dimen/alert_dialog_button_margin_left_right"
android:layout_marginRight="@dimen/alert_dialog_button_margin_left_right"
android:layout_marginTop="10dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@android:color/white"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
我认为您正在使用线性布局。因此,请使用相对布局而不是线性布局。
答案 1 :(得分:0)
在线性布局中添加父约束布局,并将进度条移出线性布局。
<constraint>
<linear/>
<progress/>
</constraint>
类似这样的东西:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_background"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
>
<!-- Your complete layout -->
</LinearLayout>
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:visibility="gone" />
</android.support.constraint.ConstraintLayout>
答案 2 :(得分:0)
好吧,看来您对想要的东西使用了错误的属性,看起来:
android:layout_gravity =“ center” 会将您的 TextView 放在布局的中心,但是您也可以在 ProgressBar 中设置它表示仅会显示其中一个,这仅在您想要一次显示一个视图时有用,如果您想同时显示两个视图,请尝试删除此属性之一。
另一件事,您在TextView上设置了 android:layout_margin =“ 30dp” ,因此您的progressBar将与TextView相距很远,这也可能导致ProgressBar变得不可见,请尝试 16dp 。
<TextView
android:id="@+id/dialog_message"
style="@style/arial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" // remove here or in ProgressBar
android:layout_margin="16dp" // I just replace 30dp to 16dp
android:text=" "
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="20sp" />
编辑-另一个答案
我编辑您的完整XML代码,用填充替换一些边距,并始终显示progressBar。现在,您可以隐藏/显示textView或进度条,它应该可以工作。
我还替换了一些属性,因为这里没有,请确保再次添加。希望它能对您有所帮助。
我建议使用RelativeLayout来改善您的UI。下面我显示了当前的XML行为。
显示ProgressBar时
下面的链接上有完整的源代码,我无法在此处粘贴代码。
https://gist.github.com/pedromassango/a6dc213823b297931f1ef2e6b6954466