实现不确定微调器的最佳实践

时间:2017-05-09 02:21:47

标签: android android-fragments android-progressbar

在片段转换期间,我一直在尝试许多不同的方法来实现正确的进度微调器。像这样:

enter image description here

我遇到的主要问题是当微调器消失且(微调器)背景变得透明时,旧片段仍在显示。我尝试了一些事情没有运气,我觉得我已经没有选择了。如果有人知道如何干净利落,请告诉我。我还想保留我使用add代替replace而不是<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <FrameLayout android:id="@+id/main_container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.citychurchtulsa.cc.citychurchapp.MainActivity"/> <!--Only holds progress bar, main container will be for fragment display!!!--> <RelativeLayout android:id="@+id/relative_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <ViewStub android:id="@+id/loadSpinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inflatedId="@+id/subView" android:layout="@layout/progress_spinner"/> </RelativeLayout> <!-- Side navigation drawer UI --> <ExpandableListView android:id="@+id/nav_view" android:layout_width="@dimen/nav_drawer_width" android:layout_height="match_parent" android:layout_gravity="left|start" android:background="@color/white" android:divider="@color/colorPrimary" android:dividerHeight="@dimen/divider_height" android:groupIndicator="@android:color/transparent" android:indicatorLeft="? android:attr/expandableListPreferredItemIndicatorLeft"/> </android.support.v4.widget.DrawerLayout> 我正在使用DrawerLayout的方式,这是我的布局XML:

ProgressBar

我试过了:

  • RelativeLayout放在RelativeLayout中,然后在我需要的时候设置可见性,将onViewCreated背景设置为颜色,并关闭可见性并将背景设置为透明,当我不。在扩展片段类之外完成。

  • 与上面相同,但是在扩展片段类中完成。这里尝试了两种不同的方法。在一次尝试中,我将项目隐藏在onStart中,另一项隐藏在postDelayed中。

  • 创建一个我使用的空片段就像我提交的其他片段一样,然后返回所需片段的提交

  • 使用public void enableLoadSpinner(boolean set){ if(set) { mainContainer.setVisibility(View.GONE); loadSpinner.setVisibility(View.VISIBLE); relativeLayout.setBackgroundResource(R.color.colorSecondary); } else { mainContainer.setVisibility(View.VISIBLE); loadSpinner.setVisibility(View.GONE); relativeLayout.setBackgroundResource(android.R.color.transparent); } } 处理程序,但由于所有设备都不同,我不一定喜欢它

无论如何,我觉得我已经尝试了更多,但是我无法想到其他任何东西。我非常感谢任何帮助。

这是我一直试图使用的微调器的显示/隐藏代码:

import java.util.Scanner;
import java.util.ArrayList;

public class SparseArrays{


// count the number of occurances of a string in an array
int countStringOccurance(ArrayList<String> arr, String str){
    int count = 0;
    for (int i=0; i<arr.size(); i++) {
        if (str==arr.get(i)) {
            count += 1;
        }
    }
    return count;
}


void start(){
    // scanner object
    Scanner input = new Scanner(System.in);

    // ask for user to input num strings
    System.out.println("How many string would you like to enter?");
    // store the number of strings
    int numStrings = input.nextInt();
    // to get rid of extra space
    input.nextLine();

    // ask user to enter strings
    System.out.println("Enter the "+numStrings+" strings.");
    ArrayList<String> stringInputArray = new ArrayList<String>();
    for (int i=0; i<numStrings; i++) {
        stringInputArray.add(input.nextLine());
    } // all strings are in the stringInputArray

    // ask user to input num queries
    System.out.println("Enter number of queries.");
    int numQueries = input.nextInt();
    // to get rid of extra space
    input.nextLine();

    // ask user to enter string queries
    System.out.println("Enter the "+numQueries+" queries.");
    ArrayList<String> stringQueriesArray = new ArrayList<String>();
    for (int i=0; i<numQueries; i++) {
        stringQueriesArray.add(input.nextLine());
    } // all string queries are in the stringQueriesArray

    for (int i=0; i<stringQueriesArray.size(); i++) {
        int result = 
      countStringOccurance(stringInputArray,stringQueriesArray.get(i));
        System.out.println(result);
    }
}

void printArr(ArrayList<String> arr){
    for (int i=0; i<arr.size(); i++) {
        System.out.println(arr.get(i));
    }
    System.out.println(" ");
}

public static void main(String[] args) {
    SparseArrays obj = new SparseArrays();
    obj.start();
}
}

1 个答案:

答案 0 :(得分:0)

好吧,我发现了问题!关于FragmentTransactionFragmentTransaction的观点存在问题!两者之间发生了某种奇怪的互动,因此我删除了ProgressBar并使用自定义动画使# models/company.rb class Company < ApplicationRecord has_one :ceo end # models/ceo.rb Class Ceo < ApplicationRecord belongs_to :company end # controllers/company_controller.rb @company = Company.join(:ceo) # views/company/index.html.erb # ...somewhere in the view #{@company.ceo.name} 消失。