2012-04-16 4 views
2

viewpager의 페이지에 3 개의 아이템을 보여줄 수 있으면 좋겠지 만 지금은 viewpager의 패딩 값과 여백 값만 설정할 수 있으므로 viewpager의 페이지에 하나의 아이템 만 보여줄 수 있습니다. 아이템 너비는 어떻게 설정할 수 있습니까? 항목의 너비를 조금이라도 설정할 수 있다면 뷰 페이지는 페이지에 더 많은 항목을 표시합니다.뷰 페이지의 항목 너비를 설정할 수 있습니까?

답변

3

페이지 여백을 음수로 설정 했습니까? setPageMargin(int)? 내가 올바르게 기억하면, 당신이 그런 식으로 설명하는 것과 비슷한 것을 깨닫는 누군가를 읽습니다.

다른 방법으로는 Gallery을 사용하는 방법을 살펴볼 수도 있습니다.하지만 덜 유연하고 버그가 많은 것으로 보이는 점을 인정해야합니다.

+0

답해 주셔서 감사합니다. 부모보기에 목록을 추가해야하므로 갤러리를 사용할 수 없습니다. 갤러리에는 문제가 있습니다. –

+0

감사합니다, 당신의 이상으로 달성했습니다. –

+0

슬라이드의 일부가 겹치기 전에 슬라이드의 일부가 손댈 수 없게 만듭니다. –

4

빠른 응답

당신이 그 ViewPager 위해 만든 PagerAdapter 구현 getPageWidth를 오버라이드 (override)되어 원하는 것은.

예를 들어 0.8f으로 설정하면 다음 페이지 및/또는 이전 페이지의 일부가 보이도록 단일 페이지가 뷰 페이지 너비의 80 % 만 덮게됩니다. https://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)

다른 발언

에서

@Override 
public float getPageWidth(final int position) { 
    return 0.8f; 
} 

자세한 내용은 또한 부정적인 마진 만 별도의 페이지가 서로 겹치지이되지 않습니다. 여백은 각 페이지 사이의 공간을 정의하는 데 사용됩니다.

다른 페이지 너비가 구성되지 않은 경우 (설정 자, 무시 만) 기본값으로 100 %를 덮어서 드래그하지 않으면 다른 페이지를 볼 수 없습니다. 무엇이 가능한지의

코드 예제

아주 좋은 개요 레이아웃 여기에 https://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html

뷰 페이저 인라인 구성 어댑터 구현의

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</android.support.v4.view.ViewPager> 

예를 찾을 수있다,이 것 onCreate 또는 onViewCreated 메소드로 이동하십시오.

// get a reference to the viewpager in your layout 
ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager); 
// this margin defines the space between the pages in the viewpager mViewPager.setPageMargin(context.getResources().getDimensionPixelSize(R.dimen.margin_normal)); 
// setting the adapter on the viewpager, this could/should be a proper Adapter implementation in it's own class file instead 
mViewPager.setAdapter(new PagerAdapter() { 

    // just example data to show, 3 pages 
    String[] titles = {"Eins", "Zwei", "Drei"}; 
    int[] layouts = {R.layout.layout1, R.layout.layout2, R.layout.layout3}; 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
     // here you can inflate your own view and dress up 
     ViewGroup layout = (ViewGroup) inflater.inflate(layouts[position], container, false); 
     container.addView(layout); 
     return layout; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View)object); 
    } 

    @Override 
    public float getPageWidth(final int position) { 
     return 0.8f; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return titles[position]; 
    } 

    @Override 
    public int getCount() { 
     return layouts.length; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == object; 
    } 
}); 

예제 코드를 기반으로 https://newfivefour.com/android-viewpager-simple-views.html

+0

커먼웨어 링크 (두 번째 것)가 도움이됩니다! –

관련 문제