Android - 将Viewpager中的子图像对齐在顶部

时间:2016-02-03 16:10:51

标签: java android xml android-studio

我是制作Android应用程序的新手,所以提前抱歉我的诺言。

我刚刚在Android Studio中使用Viewpager创建了一个图像滑块,第一个图像在顶部正确对齐,但子图像不是,它们几乎居中。我无法在网上找到这个问题的解决方案,而且我已经坚持了一个多小时。

在布局xml文件中。我试图在viewpager元素中对齐它,我试图将它与ImageView元素对齐(但这似乎只适用于第一个图像),而在java中我试图将它与imageView.setBaseline对齐(0)但没有任何效果。我还在java中查看了imageView类的函数,但是我找不到setBaseline以外的函数。

我可以通过将viewpager元素的高度固定到图像高度来解决它,但我发现这是一个丑陋的解决方案。

相关代码如下:

content_main.xml:

<android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"/>

swipe_layout.xml:

<android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    />

在java中创建imageView的函数:

@Override
public Object instantiateItem(ViewGroup container, int position) {
    layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View item_view = layoutInflater.inflate(R.layout.swipe_layout, container, false);
    ImageView imageView = (ImageView) item_view.findViewById(R.id.image_view);
    imageView.setImageResource(image_resources[position]);
    imageView.setBaseline(0);
    container.addView(item_view);
    return item_view;
}

1 个答案:

答案 0 :(得分:0)

使用TabLayout

XML

<android.support.design.widget.TabLayout
            android:id="@+id/tab_layout"
            app:tabGravity="fill"
            app:tabIndicatorColor="#ff5722"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/toolbar"
            app:tabBackground="@color/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

和java

tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(vpPager);
for (int i = 0; i < tabLayout.getTabCount(); i++) {     
    tabLayout.getTabAt(i).setIcon(//yourIcon//);}