まず最初に、私は多くを検索しましたが、解決策は機能しませんでした。使用される設計libには、23.1.1アンドロイドTabLayoutとViewPagerがフラグメント内で機能しない
// MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
// main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<fragment
class = "com.tablayoutfragmenttest.FragmentTest"
android:id="@+id/hahah"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
//フラグメント
public class FragmentTest extends Fragment {
private TabLayout mTablayout;
private ViewPager mVp;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.fragment, container, false);
mTablayout = (TabLayout)v.findViewById(R.id.bizfrag_tabs_id);
mTablayout.setTabMode(TabLayout.MODE_SCROLLABLE);
mVp = (ViewPager)v.findViewById(R.id.bizfrag_vp_id);
mVp.setAdapter(new MyAdapter(getChildFragmentManager()));
mVp.setOffscreenPageLimit(0);
//mTablayout.setupWithViewPager(mVp);
//mTablayout.post(new Runnable() {
// @Override
// public void run() {
// if (ViewCompat.isLaidOut(mTablayout)) {
// mTablayout.setupWithViewPager(mVp);
// } else {
// mTablayout.addOnLayoutChangeListener(
// new View.OnLayoutChangeListener() {
// @Override
// public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
// mTablayout.setupWithViewPager(mVp);
//
// mTablayout.removeOnLayoutChangeListener(this);
// }
// });
// }
// }
// });
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mTablayout.post(new Runnable() {
@Override
public void run() {
mTablayout.setupWithViewPager(mVp);
}
});
}
}
//fragment.xml
です<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:id="@+id/bizfrag_tabs_id"
android:layout_width="match_parent"
android:layout_height="40dp"/>
<android.support.v4.view.ViewPager
android:id="@+id/bizfrag_vp_id"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
// ViewPagerのアダプタ
public class MyAdapter extends FragmentStatePagerAdapter {
public static String[] totalPossibleTabs = new String[]{"this is tab0", "this is tab1", "this is tab2", "this is tab3", "this is tab4", "this is tab5", "this is tab6", "this is tab7", "this is tab8", "this is tab9"};
public MyAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position) {
return new Fragment();
}
@Override
public int getCount() {
return totalPossibleTabs.length;
}
@Override
public CharSequence getPageTitle(int position) {
return totalPossibleTabs[position];
}
}
私はアプリを実行して、ページをスワイプすると、問題は次のとおりです。 the tab's indicator is in wrong position
ありがとうございます、私は0がパラメータとして無効であることを知っています。実際には、私の質問はフラグメントと一緒にViewPagerとTabLayoutを一緒に使用することです。とにかく、thx –
私はfragment.xmlでCoordinatorLayoutを使用しますが、幸運なことはありません –
私はこの問題で説明した状況は、あなたたちはこれに来る? –