2013-10-23 4 views
1

하나의 LinearLayout에 3 ViewPagers을 사용하고 있습니다. 그리고 나는 ViewPager의 높이를 wrap_content으로 동적으로 설정하려고합니다. 내 조각은 ViewPager에도 동적으로로드됩니다. 따라서 조각의 높이가 뷰 페이지의 높이보다 크면 뷰 페이지의 높이가 자동으로 증가해야합니다.조각의 내용 높이로 내용을 감싸기 위해 뷰 호출기 높이를 변경하십시오

레이아웃

enter image description here

무엇을 제안하십시오 같다?

답변

0

<LinearLayout android:orientation="vertical"> 
    <ViewPager /> 
    <ViewPager /> 
    <ViewPager /> 
</LinearLayout> 

후 원하는 결과를 가져야 wrap_content에 ViewPagers의 높이를 설정은 다음과 같이 구현 보인다 가정. 이 작업을 동적으로 수행 할 필요는 없습니다. 당신이 정말로 동적으로 그것을 할 수/필요를 원하는 경우 그렇지 않으면, 그냥 코드에서 다음에 ViewPager의 LayoutParams를 설정 한 다음의 LayoutParams 생성자

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT); 
viewPager.setLayoutParams(lp); 

매개 변수는 (폭, 높이)이며, 당신은을 변경해야 너비가 wrap_content가 아니길 원한다면 너비.

+0

나는 그걸 시도했지만 그때 아무도 화면에 표시됩니다. 그들은 높이를 0으로 받고있다. 그리고 또한 내가 좀 더 긴 viewpager에서 textview 있어요 때문에 페이지 변경에 동적으로 변경할 필요가 – neeraj

+0

레이아웃 코드를 표시 할 수 있습니까? –

+0

같은 문제가 있습니다. 나는 화면 상에 아이템을 얻지 못한다. –

3

문제는 "wrap_content"가 View 호출기에서 작동하지 않는 것입니다. 는 여기에 솔루션입니다 :

import android.content.Context; 
import android.support.v4.view.ViewPager; 
import android.util.AttributeSet; 
import android.view.View; 

public class CustomViewPager extends ViewPager { 

public CustomViewPager(Context context) { 
    super(context); 
} 

public CustomViewPager(Context context, AttributeSet attrs){ 

    super(context, attrs); 
} 

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 

    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

    int height = 0; 
    for(int i = 0; i < getChildCount(); i++) { 

     View child = getChildAt(i); 

     child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 

     int h = child.getMeasuredHeight(); 

     if(h > height) height = h; 

    } 

    heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); 

    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 
} 

참조 : 지식을 공유하고 저를 해결하기 언급을 주저하지 말고, 그것을이다 Android: I am unable to have ViewPager WRAP_CONTENT

.

관련 문제