开始学习Android,我设法用TabLayout
制作了ViewPager
。我注意到,TabLayout和ViewPager布局都是同一XML文件中LinearLayout
的子元素,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primary_color"
android:orientation="vertical"
tools:context="com.example.barebones.barebones.MainActivity">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
style="@style/CategoryTab"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
主要活动使应用膨胀,如下所示:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Find the view pager that will allow the user to swipe between fragments
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
// Create an adapter that knows which fragment should be shown on each page
TabsAdapter adapter = new TabsAdapter(this, getSupportFragmentManager());
// Set the adapter onto the view pager
viewPager.setAdapter(adapter);
// Find the tab layout that shows the tabs
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
// Connect the tab layout with the view pager. This will
// 1. Update the tab layout when the view pager is swiped
// 2. Update the view pager when a tab is selected
// 3. Set the tab layout's tab names with the view pager's adapter's titles
// by calling onPageTitle()
tabLayout.setupWithViewPager(viewPager);
}
}
我不明白他们如何一起工作?他们不应该分开吗?或含义是:
选项卡是LinearLayout的子级,然后其余空间用于该ViewPager,这基本上会使该LinearLayout剩余空间中的ViewPager内容膨胀?
答案 0 :(得分:1)
任何布局文件中的外部布局都是父级,并为所有子级设置空间规则。您可以嵌套布局或包含所需的任意数量的模板或自定义视图。您必须将TabLayout和ViewPager视为更大布局中的2个视图。他们占据了您将允许他们拥有的空间,但决不能超过父母的限制
更多说明:TabLayout是一个小部件,它使您可以将选项卡粘贴在应用程序的工具栏下方,而Viewpager是一个小部件,使您可以具有可滑动查看的视图。除非需要将选项卡和可滑动查看的视图组合在一起,否则不必将它们包括在一起。从技术上讲,您所设置的ViewPages将占据整个屏幕,但是TabLayout出现在顶部,因此看来分页器从选项卡结束处开始。
答案 1 :(得分:0)
ViewPager
应该填满TabLayout
和wrap_content
留下的空间:
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android_layout_weight="1.00"/>
带有ViewPager
的{{1}}很可能只会导致版面的子项重叠。