如何以编程方式多次设置ViewPager的高度?

时间:2015-05-05 05:19:11

标签: android android-viewpager

我可以使用<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rlActivityProfile" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.my.package.ProfileActivity"> <!--MainContainer--> <com.my.package.widget.ScrollViewX android:id="@+id/svxUserProfile" android:layout_width="match_parent" android:layout_height="wrap_content"> <!--Main Container--> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <!--Header--> <RelativeLayout android:id="@+id/rlProfileBanner" android:layout_width="match_parent" android:layout_height="300dp" android:background="@color/listile_green"> <!-- SOME OTHER VIEW--> </RelativeLayout> <RelativeLayout android:id="@+id/rlTabs" android:layout_below="@id/rlProfileBanner" android:layout_width="match_parent" android:layout_height="wrap_content"> <!--Slider--> <android.support.v4.view.ViewPager android:id="@+id/vpTabs" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/stlControl" /> </RelativeLayout> </RelativeLayout> </com.my.package.widget.ScrollViewX> <!--Transparent toolbar--> <include android:id="@+id/iAppBar" layout="@layout/app_bar" /> </RelativeLayout> 以编程方式设置ViewPager的高度,但它在运行时只能运行一次。现在的问题是如何在运行时多次设置高度?

activity_layout.xml

ViewPager vpTabs = (ViewPager) findViewById(R.id.vpTabs);

viewPager在MainActivity类的onCreate()中初始化

//Calling from fragment
int totalHeight = titles.length * EditProfileAdapter.ROW_HEIGHT;
vpListener.onViewPagerHeightChange(totalHeight);

我正在使用像这样的接口来改变viewPager的高度

@Override
    public void onViewPagerHeightChange(int height) {
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.height = height; //left, top, right, bottom
        vpTabs.setLayoutParams(params);
    }
MainActivity中的

ScrollViewX

注意:自定义窗口小部件{{1}}与ScrollView相同,但具有自定义ScrollListener。

3 个答案:

答案 0 :(得分:8)

定义新的layoutParams并将viewPager设置为它,然后更改layoutParams的高度,这样做就行了,不要直接对其原始参数进行更改或更改不会多次影响布局,你还必须确保您使用的条件是正确的,尝试使用此:

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

//setting margins around imageimageview
params.height=yourHeight; //left, top, right, bottom

//adding attributes to the imageview
viewPager.setLayoutParams(params);

而不是直接设置

答案 1 :(得分:0)

Sharpen

答案 2 :(得分:0)

首先,为LayoutParams获取your ViewPager,然后为此LayoutParams分配高度

ViewGroup.LayoutParams lp = viewPager.getLayoutParams();
lp.height = ScreenUtils.convertDpToPixel(300, getContext());