2017-04-27 139 views
0

在我的应用程序中,我使用此库 https://github.com/DmitryMalkovich/circular-with-floating-action-button 来实现带浮动操作按钮的进度条。它的工作活动,但是当我在我的片段的布局进度条中包含此布局不显示。 这里是我的代码更好的解释 请指导我在哪里我错了 任何帮助将不胜感激。 customlayout.xml进度条不显示在片段[ANDROID]

<?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> 

我隐藏和显示,当我得到serivice数据运行customlayout.xml的父布局,前服务呼叫我用查看.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); 
    } 
+0

另外补充服务代码,你在哪里隐藏或可见的进度。 –

+0

更改FAB和进度条的顺序 –

+0

把你的java代码放在这里 –

回答

0

让您在customlayout与父布局底部。 因此,您的用于该布局的z索引位于顶部,并且可以看到并且可以被您看到。

+0

你的意思是我应该在fragmentlayout.xml的末尾包含customlayout.xml? – User

0

您需要使用带FAB的CoordinatorLayout

只需将您的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> 

+0

然后进度条在哪里?你能否提供一个简单的示例代码 – User

+0

@User只需用CoordinatorLayout替换RealativeLayout即可。其实你在这个lin github里面有示例应用程序。检查实现[这里](https://github.com/DmitryMalkovich/circular-with-floating-action-button/blob/master/sample/src/main/res/layout/activity_scrolling.xml) –

0

试试这个:

@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(); 
       } 
      }); 

}