第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

屏幕方向改變后,tab的title定位不正確,怎么破?

講得挺好,學(xué)到挺多的,就是有倆問題:一個是當(dāng)滑動到最后一個時,應(yīng)不進(jìn)入ViewPagerIndicator滑動,不然會造成最后留有一個tab寬度的空余;還有一個問題就是在處于顯示區(qū)域外的item時,即我們tab有10,設(shè)置可顯示為3個,當(dāng)三角形處于大于第三個的地方,如第六個時,調(diào)轉(zhuǎn)屏幕方向,發(fā)現(xiàn)ViewPagerIndicator的title會從第一個顯示起,而不會直接定位到三角形指示的title,但ViewPager定位頁面是正確的。怎么破?

正在回答

5 回答

對于第一個問題,可以讓三角形滑動到最后一個tab再執(zhí)行scrollTo()方法,在原有代碼scroll
()方法上修改為:

? ?public void scroll(int position, float positionOffset) {
? ?int tabWidth = getWidth() / mTabVisibleCount;
? ?mTranslationX = (int) (tabWidth * (positionOffset + position));
? ?//容器移動,當(dāng)tab處于移動至最后一個時
? ?if (position >= (mTabVisibleCount - 1) && positionOffset > 0 && getChildCount() > mTabVisibleCount) {
? ? ? ?if (mTabVisibleCount != 1) {
? ? ? ? ? ?this.scrollTo(((position - (mTabVisibleCount - 1)) * tabWidth + (int) (tabWidth * positionOffset)), 0);
? ? ? ?} else {
? ? ? ? ? ?this.scrollTo((int) (position * tabWidth + tabWidth * positionOffset), 0);
? ? ? ?}
? ?}
? ?invalidate();
}

修改代碼后效果如下:

http://img1.sycdn.imooc.com//570fcf08000101ab04160637.jpg

對于第二個問題,涉及到View狀態(tài)的存儲與恢復(fù),可參考Android-五子連珠課程,

附上代碼如下:

在原有代碼上增加屬性:

private int myPosition;//用來記錄當(dāng)前選擇的position
private static final String INSTANCE = "instance";
private static final String MYPOSITION = "myPosition";
private static boolean isSave = false;//是否切屏的標(biāo)識

1.在原有代碼上增加

..................

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? myPosition = position;//只增加這一句,保存當(dāng)前的position
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scroll(position, positionOffset);

????????????????????????????????}

................

2.重寫onSaveInstanceState()方法和onRestoreInstanceState(Parcelable state)方法(直接復(fù)制即可):

@Override
protected Parcelable onSaveInstanceState() {
? ?Bundle bundle = new Bundle();
? ?bundle.putParcelable(INSTANCE, super.onSaveInstanceState());
? ?bundle.putInt(MYPOSITION, myPosition);
? ?isSave = true;
? ?return bundle;
}

@Override
protected void onRestoreInstanceState(Parcelable state) {
? ?if (state instanceof Bundle) {
? ? ? ?Bundle bundle = (Bundle) state;
? ? ? ?myPosition = bundle.getInt(MYPOSITION);
? ? ? ?super.onRestoreInstanceState(bundle.getParcelable(INSTANCE));
? ? ? ?return;
? ?}
? ?super.onRestoreInstanceState(state);
}

3.重寫onDraw(Canvas canvas)方法(直接復(fù)制即可):

@Override
protected void onDraw(Canvas canvas) {
? ?super.onDraw(canvas);
? ?if (isSave) {
? ? ? ?int tabWidth = getWidth() / mTabVisibleCount;
? ? ? ?if (myPosition >= mTabVisibleCount)
? ? ? ? ? ?this.scrollTo((myPosition - mTabVisibleCount + 1) * tabWidth, 0);
? ? ? ?isSave = false;
? ?}
}

運(yùn)行效果如下:

http://img1.sycdn.imooc.com//570fd29300017bb106040575.jpg

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

小內(nèi)存 提問者

非常感謝!
2016-04-15 回復(fù) 有任何疑惑可以回復(fù)我~

沒反應(yīng)啊,怎么玩T_Tt

0 回復(fù) 有任何疑惑可以回復(fù)我~

切屏?xí)rpage 會清零

0 回復(fù) 有任何疑惑可以回復(fù)我~

試了樓上提供的方法,屏幕方向改變,照樣亂套。。。

0 回復(fù) 有任何疑惑可以回復(fù)我~

666

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
Android-自定義ViewPager指示器
  • 參與學(xué)習(xí)       30024    人
  • 解答問題       78    個

帶領(lǐng)大家實(shí)現(xiàn)最火爆的跟隨型指示器,學(xué)完保準(zhǔn)壓倒一片

進(jìn)入課程

屏幕方向改變后,tab的title定位不正確,怎么破?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號