簡體   English   中英

進度條未顯示在片段[ANDROID]中

[英]Progress Bar not showing in fragment [ANDROID]

在我的應用程序中,我正在使用此庫https://github.com/DmitryMalkovich/circular-with-floating-action-button來實現帶有浮動動作按鈕的進度條。 它正在處理活動,但是當我在片段的布局進度欄中包含此布局時,它不會顯示。 這是我的代碼,可以提供更好的解釋。請指導我哪里出錯了,我們將不勝感激。 customlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="gone"
   >

<com.dmitrymalkovich.android.ProgressFloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:clickable="true">

        <ProgressBar
            android:id="@+id/progressbar"
            style="@style/Widget.AppCompat.ProgressBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"/>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/floatingActionButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/transparent_logo"
            app:backgroundTint="@color/bg_color"
            android:layout_centerInParent="true"
           />

   </com.dmitrymalkovich.android.ProgressFloatingActionButton>


</RelativeLayout>

fragmentlayout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layoutcontainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="bg_color"
    >
    <include
        layout="@layout/customlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
   <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <include
        layout="@layout/otherlayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

當我從服務中獲取數據時,我在運行時隱藏並顯示customlayout.xml的父級布局,在服務調用之前,我使用View.VISIBLE顯示它,而在服務調用之后,我使用View.GONE隱藏它

更新的 Java代碼

分段

public class MyFragment extends Fragment {
    private Context context;

    //root view of layout
    View rootView;
    private static final String ARG_PARAM1 = "Class";
    private String screen_title;
    private String URL = "";

    public MyFragment() {
        // Required empty public constructor
    }

    public static MyFragment newInstance(String param1) {
        MyFragmentfragment = new MyFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = getActivity();
        if (getArguments() != null) {
            screen_title = getArguments().getString(ARG_PARAM1);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        rootView = inflater.inflate(R.layout.fragmentlayout, container, false);
        //find views by ids
        getData();
        return rootView;
    }

    private void getData() {
        CustomClass.getInstance(context, rootView).show();
        //service call
       //on getting response from serivce (have implemented a listener here)
        CustomClass.getInstance(context, rootView).hide();    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }

CustomClass

public class CustomClass {

    private ProgressBar mProgressBar;
    private FloatingActionButton mFab;
    private RelativeLayout parentLayout;
    private LayoutInflater inflater;


    private static CustomClass custom;

    private CustomClass (Context context) {
        findViewsById(context);
    }

    private CustomClass (View view) {
        findViewsById(view);
    }

    public static CustomClass getInstance(Context context, View view) {
        custom = new CustomClass (view);
        custom.setPColor(context);
        return custom;
    }

    public static CustomClass getInstance(Context context) {
        custom = new CustomClass (context);
        custom.setPColor(context);
        return custom;
    }

    private void setPColor(Context context) {
        if (mProgressBar != null)
            mProgressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(context, R.color.bluecolor), android.graphics.PorterDuff.Mode.MULTIPLY);
    }

    private void findViewsById(View view) {
        if (view != null) {
            mProgressBar = (ProgressBar) view.findViewById(R.id.custom_progressbar);
            mFab = (FloatingActionButton) view.findViewById(R.id.custom_floatingActionButton);
            parentLayout = (RelativeLayout) view.findViewById(R.id.rl_progress_fab_container);

        }
    }

    private void findViewsById(Context context) {
        Activity activity = (Activity) context;
        if (activity != null) {
            mProgressBar = (ProgressBar) activity.findViewById(R.id.custom_progressbar);
            mFab = (FloatingActionButton) activity.findViewById(R.id.custom_floatingActionButton);
            parentLayout = (RelativeLayout) activity.findViewById(R.id.rl_progress_fab_container);

        }
    }

    public void show() {
        if (custom.parentLayout != null)
            custom.parentLayout.setVisibility(View.VISIBLE);
    }

    public void hide() {
        if (custom.parentLayout != null)
            custom.parentLayout.setVisibility(View.GONE);
    }

在父布局的底部進行自定義布局。 因此該布局的z索引位於頂部,並且您可以看到它並消失了。

您需要將CoordinatorLayout與FAB一起使用。

只需將您的FAB放入CoordinatorLayout

如您所見,庫示例代碼建議也使用它。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.dmitrymalkovich.android.progressfabsample.ScrollingActivity">

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/app_bar_height"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<com.dmitrymalkovich.android.ProgressFloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/fab_margin"
    android:clickable="true"
    app:layout_anchor="@id/app_bar"
    app:layout_anchorGravity="bottom|end">

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_backup_black_24dp"
        app:backgroundTint="@color/colorFab" />

    <ProgressBar
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</com.dmitrymalkovich.android.ProgressFloatingActionButton>

<com.dmitrymalkovich.android.ProgressFloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:clickable="true">

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_backup_black_24dp"
        app:backgroundTint="@color/colorFab" />

    <ProgressBar
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</com.dmitrymalkovich.android.ProgressFloatingActionButton>

嘗試這個:

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            rootView = inflater.inflate(R.layout.fragmentlayout, container, false);
            //find views by ids
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    getData();
                }
            });
            return rootView;
  }

要么

private void getData() {
     getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    CustomClass.getInstance(context, rootView).show();

        CustomClass.getInstance(context, rootView).hide(); 
                }
            });

 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM