2017-06-08 5 views
1

Ich verwende TabLayout mit ViewPager. Und ich weiß, ViewPager überschreiben Tabsymbole. Also gebe ich ihre Icons mit Java-Code. Aber wenn ich die andere Seite wische, wird das Tabs-Symbol versteckt oder wird irgendwo angezeigt. Habt ihr eine Idee, dieses Problem zu lösen?TabLayout-Symbol wird ausgeblendet, wenn Sie die andere Registerkarte wischen

So gibt es die Bilder:

Position 0

Position 1

Hier ist mein Code:

CreateGame.java

tabLayout = (TabLayout) view.findViewById(R.id.tabs); 
    viewPager= (ViewPager) view.findViewById(R.id.viewPager); 
    viewPager.setAdapter(new ViewPagerAdapter(getChildFragmentManager())); 
    tabLayout.setupWithViewPager(viewPager,true); 
    tabLayout.getTabAt(0).setIcon(R.drawable.ic_loc_white); 
    tabLayout.getTabAt(1).setIcon(R.drawable.ic_court_black); //viewPager ikonları eziyor. İkonları tekrar ver. 
    recyclerView = (RecyclerView) view.findViewById(R.id.courtList); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); 
    courtInfoAdapter = new CourtInfoAdapter(getContext(), CreateGame.this,courtInfos); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 



    btn_continue.setOnClickListener(new View.OnClickListener() { 


    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) 
     { 
      if(tab.getPosition()==0) 
      { 
       int height = (int) getResources().getDimension(R.dimen.lnr_main_height); 
       recyclerView.setAdapter(null); 
       deleteCourtInfos(); 
       upLayout.setVisibility(View.VISIBLE); 
       cardViewLayout.setVisibility(View.GONE); 
       RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mainLayout.getLayoutParams(); 
       params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,1); 
       params.setMargins(0,0,0,287); 
       params.height=height; 
       mainLayout.setLayoutParams(params); 
      } 

      if(tab.getPosition()==1) 
      { 

       int height = (int) getResources().getDimension(R.dimen.lnr_main_height_change); 
       recyclerView.setAdapter(courtInfoAdapter); 
       fetchCourtInfos(); 
       upLayout.setVisibility(View.GONE); 
       cardViewLayout.setVisibility(View.VISIBLE); 
       RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(mainLayout.getLayoutParams()); 
       params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,0); 
       params.setMargins(0,10,0,0); 
       params.addRule(RelativeLayout.CENTER_HORIZONTAL,1); 
       params.height=height; 
       mainLayout.setLayoutParams(params); 

      } 
     } 

creategame.xml

<android.support.v4.view.ViewPager 
      android:id="@+id/viewPager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginStart="10dp" 
       app:tabBackground="@drawable/selector_for_tab"> 

       <android.support.design.widget.TabItem 
        android:id="@+id/tab_loc" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:icon="@drawable/ic_loc_white" /> 

       <android.support.design.widget.TabItem 
        android:id="@+id/tab_area" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:icon="@drawable/ic_court_black" /> 

      </android.support.design.widget.TabLayout> 
     </android.support.v4.view.ViewPager> 

Antwort

0

Ich habe dieses Problem mit der Verwendung von Selektor gelöst.

Für Register 0:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/ic_loc_white" android:state_selected="true"/> 
<item android:drawable="@drawable/ic_location_with_border"/> <!-- default --> 

Für Tab 1:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/ic_court_white" android:state_selected="true"/> 
<item android:drawable="@drawable/ic_court_black"/> <!-- default --> 

Verwandte Themen