我希望我可以在viewpager的頁面中顯示3個項目,但現在我只能設置viewpager的填充值和邊距值,因此它只在viewpager的頁面中顯示一個項目。我如何設置項目寬度?我認爲如果我可以設置更多的項目寬度,viewpager會在頁面中顯示更多項目。我可以設置viewpager的項目寬度嗎?
回答
您是否嘗試將頁邊距設置爲負值,請參閱setPageMargin(int)
?如果我沒有記錯的話,我會閱讀某人意識到類似於你這樣描述的東西。
或者,你可以看看使用代替一個Gallery
,雖然我不得不承認我不是他們的忠實粉絲,因爲他們似乎是不太靈活,更馬車。
快速解答
你想在你爲ViewPager
作出PagerAdapter
實現覆蓋getPageWidth
什麼。
例如,將其設置爲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;
}
更多信息,還要注意的是負利潤,只會導致單獨的頁面,以相互重疊。邊距用於定義每個頁面之間的空間。
如果沒有替代pageWidth配置(沒有setter,只有覆蓋),它將默認覆蓋100%,除非被拖動,否則不會顯示其他頁面的部分。
代碼示例
A的什麼是可能的非常好的概述可以在這裏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的示例代碼
commonsware鏈接(第二個)確實有幫助! – 2017-11-08 18:27:55
- 1. 我可以設置UIWebBrowserView的寬度嗎?
- 2. 我可以在viewpager中更改視圖的寬度嗎?
- 3. 我可以在Android的GridManagerLayout中設置動態列寬度嗎?
- 4. 我可以在FXML中設置BorderPane元素的寬度嗎?
- 5. 我可以在Node.js中設置窗口的寬度嗎?
- 6. 設置ViewPager標籤/的PageTitle寬度
- 7. 我可以將寬度設置爲100%嗎?
- 8. 我可以在css中設置最大寬度嗎?
- 9. 如何設置StatusStrip項目的寬度?
- 10. 設置Android Drawable項目的寬度?
- 11. 我可以設置UIFont高度嗎?
- 12. 我可以修復JRadioButton的寬度嗎?
- 13. JavaScript可以設置高度,寬度等屬性嗎?
- 14. 我可以掩蓋我的設備寬度嗎?
- 15. 我們可以在android中設置網頁視圖的高度和寬度嗎
- 16. 我可以在ICS的ActionBar右上角設置項目嗎
- 17. 我可以設置href的寬度和高度100%
- 18. 可以設置iFrame的src圖像的寬度嗎?
- 19. 我可以在熊貓中設置可變的列寬嗎?
- 20. 將微調器寬度設置爲當前項目寬度
- 21. 我可以使用buildnumber-maven-plugin設置項目版本嗎?
- 22. 我可以在XAML中設置ToolBar項目嗎?
- 23. 我可以在twitter-bootstrap中設置響應式佈局的最大寬度嗎?
- 24. WPF:我可以通過百分比設置元素的寬度嗎?
- 25. 我可以調整Excel列的寬度而不單獨設置它們嗎?
- 26. 我可以設置jQuery的分割按鈕的寬度
- 27. 我可以設置的90%的寬度與溢出隱藏
- 28. jqgrid - 我可以設置列的最小寬度
- 29. 我可以以編程方式設置Mercurial配置選項嗎?
- 30. 將gridView項目的高度設置爲寬度的兩倍
感謝您的回答,我會嘗試。我無法使用圖庫,因爲我需要向父視圖添加列表,圖庫對此有一些問題。 – 2012-04-16 05:09:47
謝謝,它是由你的理想實現的。 – 2012-04-16 09:43:10
這會導致部分幻燈片不可觸及,因爲它們之前的項目與它們重疊 – 2017-12-14 16:25:24