我可以使用<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。
答案 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());