gpt4 book ai didi

Android如何在按下按钮时使ProgressBar(圆圈)覆盖全屏?

转载 作者:搜寻专家 更新时间:2023-11-01 08:32:28 32 4
gpt4 key购买 nike

我尝试在单击“提交”按钮时显示 ProgessBar。它会在数据加载完成时隐藏。但是,progressBar 没有覆盖整个屏幕。相反,它被按钮覆盖。请引用屏幕截图,它应该更容易理解我的意思。

enter image description here

我要实现的是屏幕截图的底部。

Main4Activity.java

public class Main4Activity extends AppCompatActivity {

ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);

progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.GONE);

final EditText username=(EditText)findViewById(R.id.username);
final EditText email=(EditText)findViewById(R.id.email);
final EditText password=(EditText)findViewById(R.id.password);

final Button submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

progressBar.setVisibility(View.VISIBLE);

final String get_username=username.getText().toString();
final String get_email=email.getText().toString();
final String get_password=password.getText().toString();

Response.Listener<String> response_listener=new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jsonObject=new JSONObject(response);
boolean result=jsonObject.getBoolean("register_result");
progressBar.setVisibility(View.GONE);
if(result){

AlertDialog.Builder builder=new AlertDialog.Builder(Main4Activity.this);

builder.setMessage("Registration Done!")
.setNegativeButton("Back",null)
.create()
.show();

}else{

AlertDialog.Builder builder=new AlertDialog.Builder(Main4Activity.this);
builder.setMessage("User already existed! Please try different Email")
.setNegativeButton("Back",null)
.create()
.show();
}

}catch(JSONException e){
e.printStackTrace();;

}
}
};
register_request register_request=new register_request(get_username,get_email,get_password,response_listener);
RequestQueue queue=Volley.newRequestQueue(Main4Activity.this);
queue.add(register_request);
}
});

TextView register=(TextView)findViewById(R.id.login);
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(Main4Activity.this,login_activity.class);
Main4Activity.this.startActivity(intent);
}
});
}

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.collection_tutorial.Main4Activity"
android:orientation="vertical">

<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"
android:indeterminate="false"
android:layout_gravity="center" />

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/password"
android:layout_below="@+id/email"
android:layout_centerHorizontal="true"
android:hint="Password"
android:layout_margin="10dp" />

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/username"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:hint="UserName / Restaurant Name"
android:layout_margin="10dp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Existing User? Please Login here->"
android:id="@+id/login"
android:layout_below="@+id/submit"
android:layout_centerHorizontal="true"
android:layout_margin="10dp" />

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Submit Registration"
android:id="@+id/submit"
android:layout_below="@+id/password"
android:layout_centerHorizontal="true"
android:layout_margin="10dp" />

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/email"
android:layout_below="@+id/username"
android:layout_centerHorizontal="true"
android:hint="Email "
android:layout_margin="10dp" />
</RelativeLayout>

我尝试将进度条和 3 个 Edittext 和按钮放入相同的 Relativelayout 中,它也不起作用。谁能帮忙?

最佳答案

首先,我将为您的内部 RelativeLayout 分配一个 id:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
>

现在我可以在代码中引用 RelativeLayout,我将添加一个新字段:

ProgressBar progressBar;
RelativeLayout container;

然后点击我会隐藏你的容器:

  @Override public void onClick(View view) {

progressBar.setVisibility(View.VISIBLE);
container.setVisibility(View.GONE); ...

并在您的任务完成后使其可见:

 @Override public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
boolean result = jsonObject.getBoolean("register_result");
progressBar.setVisibility(View.GONE);
container.setVisibility(View.VISIBLE);...

希望对您有所帮助。

但是,我不会在所有应用程序中推荐这种用户体验。还有其他通知用户的机制,请查看 Material 设计指南(如下):

进度与 Activity :https://material.io/archive/guidelines/components/progress-activity.html#进度指标:https://material.io/components/progress-indicators

顺便说一句,我测试了代码,它按照您提到的预期方式工作。这是代码的要点,但是如果您使用代码 fragment 会更好,因为我重命名了几个变量:

https://gist.github.com/moxi/396b073f9df063dc3c943579c93f1be9

查看此 gif 上的结果: https://giphy.com/gifs/uAAYE6j9hy6dy

关于Android如何在按下按钮时使ProgressBar(圆圈)覆盖全屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39542091/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com