簡體   English   中英

屏幕上的 Android ViewPager 中心項目

[英]Android ViewPager center item on screen

我試圖在我的屏幕上顯示一個對話框。 並且該對話框中應該包含帶有 FragmentPagerAdapter 的 ViewPager。 適配器中的每個項目的寬度都設置為 .7f。 對我來說重要的是,當某個項目被選中時,它應該被對齊到 ViewPager 的中心,並且下一個和上一個片段的部分可見(正如圖像所示)。 不幸的是,默認行為是向左對齊。

請問有什么辦法可以實現嗎?

謝謝

(如果有人問:在那張圖片上,ViewPager 沒有在對話框上拉伸。實際上,對話框與父級的寬度相匹配,並且按這種方式布局,因此看起來不像)

屏幕

以防萬一有人在尋找同樣的東西,我找到了解決方案:只需將左右填充設置為 ViewPager,然后將 clipToPadding 設置為 false。 這將導致一個片段居中,而旁邊的相鄰片段則如圖所示。 然后在片段之間添加空間使用 viewPager.setPageMargin(); 在代碼中。

就是這樣 :)

編輯://

這是一些示例代碼

<android.support.v4.view.ViewPager
 android:id="@+id/viewPager"
 android:clipToPadding="false"
 android:paddingLeft="40dp"
 android:paddingRight="40dp"
 android:layout_width="match_parent"
 android:layout_height="match_parent" />

ClipToPadding=false 確保即使片段位於 viewPager 的內容區域之外,也會繪制它們。

然后在代碼中在 viewPager 的項目之間添加空格:

mViewPager.setPageMargin(100);

請注意 setPageMargin 以像素數作為參數,而不是顯示點數。 您可能應該將一些 dp 值轉換為像素以在所有設備上具有正確的間距。 這種方法應該可以正常工作:

public static float dipToPixels(Context context, float dipValue) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
}

我遇到了類似的問題,沒有人試圖以這種方式解決它,它可能不完全准確,但在視覺上看起來居中。

使用 DisplayMetrics 獲取設備高度尺寸,然后為您的 viewpager 設置填充如下:

    int height = Resources.getSystem().getDisplayMetrics().heightPixels;

    pager.setPadding(0,height/6,0,0);

請注意,viewpager 的items 的布局必須設置為“wrap_content”,activity/fragment 高度中的viewpager 必須設置為“match_parent”。

在我的例子中, height/6 作為頂部填充使它看起來居中。 玩弄這個數字以獲得最佳結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM