【问题标题】:Add progress dialog in center of activity在活动中心添加进度对话框
【发布时间】:2017-08-12 01:52:05
【问题描述】:

我无法添加进度条,因为我需要如下所示的任何人都可以帮助我

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:background="#039BE5">



    <RelativeLayout
        android:id="@+id/mobileRelView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.25"
        android:padding="2dp">

        <ImageView
            android:id="@+id/mobile_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:elevation="1dp"
            android:scaleType="centerCrop"
            android:src="@drawable/mobile1" />

        <Button
            android:id="@+id/mobile_button"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:background="#a4000000"
            android:onClick="goToMobileForm"
            android:text="MOBILE"
            android:textColor="#ffffff"
            android:textSize="24sp"
            android:textStyle="bold" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
        android:paddingBottom="2dp"
        android:layout_height="match_parent"
        android:layout_weight="0.25">

        <ImageView
            android:id="@+id/laptop_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@drawable/laptopservicing" />

        <Button
            android:text="LAPTOP"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/laptop_button"
            android:onClick="goToLaptopForm"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:textSize="24sp"
            android:textStyle="bold"
            android:textColorHint="#ffffff"
            android:background="#a4000000"
            android:textColor="#ffffff" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
        android:layout_weight="0.25">

        <ImageView
            android:id="@+id/desktop_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:scaleType="centerCrop"
            android:src="@drawable/otherservice" />

        <Button
            android:text="DESKTOP"
            android:layout_width="match_parent"
            android:textStyle="bold"
            android:layout_height="match_parent"
            android:id="@+id/desktop_button"
            android:onClick="goToDesktopForm"
            android:background="#a4000000"
            android:textSize="23sp"
            android:textColor="#ffffff"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="2dp"
        android:layout_weight="0.25">

        <ImageView
            android:id="@+id/others_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:scaleType="centerCrop"
            android:src="@drawable/otherservice" />

        <Button
            android:text="OTHERS"
            android:textStyle="bold"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/others_button"
            android:onClick="gotToOthersForm"
            android:background="#A4000000"
            android:textSize="24sp"
            android:textColor="#ffffff" />
    </RelativeLayout>


</LinearLayout>

我的活动需要这个进度条

<ProgressBar
        android:id="@+id/loading_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminateTintMode="src_in"
        android:indeterminateTint="@color/colorPrimary"
        android:layout_gravity="center"
        android:layout_centerInParent="true"/>

当我简单地添加它时,我得到了这个输出

但是我像这样在中间过度需要它

【问题讨论】:

    标签: java android android-activity android-progressbar


    【解决方案1】:

    试试这个:

    以编程方式在中心显示ProgressDialog

     ProgressDialog dialog = ProgressDialog.show(MainActivity.this, "Title", "Message");
     dialog.getWindow().setGravity(Gravity.CENTER);
    

    使Indicator居中

    使用包含您的 progressBar 的自定义布局

        <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:backgroundTint="@color/colorAccent" />
    
    </RelativeLayout>
    

    使用它:

    progressDialog.setContentView(R.layout.progress_layout);  //just the indicator at center
    

    初始化进度对话框。

    ProgressDialog dialog = new ProgressDialog(this);//initialization;
    

    设置消息:

    dialog.setMessage("Message"); 
    

    如果你不想显示消息:

    dialog.setMessage(null);
    dialog.show();
    

    使背景透明:

    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    

    【讨论】:

    • 但我的对话框将左对齐,即使没有给它任何文本我认为这是标题的空白空间我可以消除它/
    • 现在它在中间,但那里有一个白色的小矩形条
    • 它体积小但宽度不错
    • 使用:progressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
    • ProgressDialog progressDialog = ProgressDialog.show(this,null,null);你能从这里删除这个节目吗,因为我只需要在某些地方显示 if{ // 这里我只需要显示一个圆圈} else {// 这里我需要显示标题}
    【解决方案2】:

    使用FrameLayout 包装根LinearLayout,将您的ProgressBar 添加为第二个孩子。它将显示在其他所有内容之上。

    【讨论】:

    • 但是我可以问你,现在已经有 5 个布局,如果我再次添加它会导致应用程序变慢吗?
    • 嵌套多个视图会减慢您的应用程序,是的。但这意味着大约有 4-5 层嵌套和大量视图。
    【解决方案3】:

    您需要将 LinearLayout 切换为 RelativeLayout 作为 xml 中的第一个布局。

    那么你可以这样做:

    <ProgressBar
        android:id="@+id/loading_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminateTintMode="src_in"
        android:indeterminateTint="@color/colorPrimary"
        android:layout_centerInParent="true"/>
    

    进度将保持居中

    【讨论】:

    • 不,我已经尝试过了,但那时它会居中,只有最后一个相对视图可见
    • 那是因为你需要为每个RelativeLayout添加一个带有android_layoutBelow="上面的relativelayout的id"的引用,让它们保持垂直
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2013-05-26
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多