Android 支持 ViewPager 是不可见的

Posted

技术标签:

【中文标题】Android 支持 ViewPager 是不可见的【英文标题】:Android support ViewPager is invisible 【发布时间】:2012-06-30 08:41:51 【问题描述】:

我已经在我的应用程序中实现了来自 android 支持库的 ViewPager,但由于某种原因,它现在是不可见的。应用程序布局有点嵌套,我确信这会导致一些问题。我将尝试将其压缩为有意义的代码。 我的布局膨胀代码:

LinearLayout ll = (LinearLayout) findViewById(R.id.root);

View v = getLayoutInflater().inflate(R.layout.project_row, null);

TextView header = (TextView) v.findViewById(R.id.rowheader);
header.setText(rowHeader);

ViewPager projectRow = (ViewPager) v.findViewById(R.id.pager);
projectRow.setAdapter(new ProjectPagerAdapter(tiles));

LinePageIndicator lineIndicator = (LinePageIndicator)v.findViewById(R.id.pagerIndicator);
lineIndicator.setViewPager(projectRow);
lineIndicator.setStrokeWidth(7);
lineIndicator.setLineWidth(50);
lineIndicator.setSelectedColor(Color.parseColor("#555555"));
lineIndicator.setUnselectedColor(Color.parseColor("#DCDCDC"));

ll.addView(v);

project_row.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_ >

<TextView
    android:id="@+id/rowheader"
    android:layout_
    android:layout_
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/SectionHeaderColor" />

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_
    android:layout_ />

<com.viewpagerindicator.LinePageIndicator
    android:id="@+id/pagerIndicator"
    android:layout_
    android:layout_ />

</LinearLayout>

如果我使用这个膨胀代码,ViewPager 会自行工作:

LinearLayout ll = (LinearLayout) findViewById(R.id.root);

View v = getLayoutInflater().inflate(R.layout.pageronlytest, null);
ViewPager vp = (ViewPager)v.findViewById(R.id.pager);
vp.setAdapter(new ProjectPagerAdapter(tiles));

ll.addView(v);

pageronlytest.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical" >

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_
    android:layout_ />

</LinearLayout>

【问题讨论】:

【参考方案1】:

project_row.xml 中,您没有明确声明LinearLayout 的方向,这意味着它将默认为“水平”。由于第一个元素 (TextView) 定义了 match_parent / fill_parent 宽度,因此它将有效地将所有其他元素推到右侧并离开屏幕。

话虽如此,您可能只需将android:orientation="vertical" 添加到LinearLayout 即可。

【讨论】:

完美运行!不敢相信我没有看到。

以上是关于Android 支持 ViewPager 是不可见的的主要内容,如果未能解决你的问题,请参考以下文章

Android 多窗口支持:检测状态栏是不是可见?

Coordinatorlayout 中的 VIewpager 在可见性消失时占用了额外的空间

与 scrollView 一起使用时,ViewPager 的内部内容不可见 [关闭]

将 Textviews 添加到 ListView 中存在的 ViewPager 但 textviews 不可见

Android:Viewpager 和 FragmentStatePageAdapter

如果我们必须在android中使用viewpager创建多个页面,那么我们是不是必须创建多个片段?还有其他选择吗?