我在ViewPager中使用TabLayout。我知道,ViewPager覆盖了标签图标。所以我用Java代码给他们的图标。但是当我滑动另一页时,标签图标隐藏或转移到某处。你们有没有想法解决这个问题?
所以有图像:
这是我的代码:
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>
答案 0 :(得分:0)
我使用选择器解决了这个问题。
对于标签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 -->
对于标签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 -->