2016-06-07 67 views
3

我開發了一個RTL應用程序,它使用TabLayout(可滾動模式)和ViewPager作爲滑動片段頁面!在測試了不同的api之後,我注意到api 17和18中TabLayout的異常行爲!rtl佈局方向的api 17和18的Tablayout問題

然後我想可能是我的xml或我的代碼有問題!我決定使用第三方庫來避免這個問題,但同樣的結果發生!

在與第三方庫所有者調查後,我們注意到庫和TabLayout都使用Horizo​​ntalScrollView,也許這就是問題所在!

調查鏈接:https://github.com/ogaclejapan/SmartTabLayout/issues/107

請指導我解決這個!

有沒有一種方法可以使用api 23和api 23中的Horizo​​ntalScrollView?

步驟來重現問題:

  • 硬的方式:創建一個新的項目,並在使用中下面的XML和代碼和API 17或18模擬器中運行它。

    buildToolsVersion 「23.0.2」

    compileSdkVersion 23

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layoutDirection="rtl" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="ir.heandshe.testinghorizontal.MainActivity"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="?android:attr/actionBarSize" 
     app:tabMode="scrollable"/> 

</RelativeLayout> 

MainActivity.java:

public class MainActivity extends AppCompatActivity { 

    private TabLayout tabs; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tabs = (TabLayout) findViewById(R.id.tabs); 
     for (int i=0 ; i<=10;i++) { 
      tabs.addTab(tabs.newTab().setText("test " + i)); 
     } 
    } 
    } 

1 - 標籤間移動在錯誤的方向

2 - 他們不會填充視口!在某些情況下,他們從屏幕中間開始! :((

  • 什麼你認爲正確的行爲應該是:

正常行爲的研究就像是當其在API的工作19+

請確保您在RTL測試工作模式!LTR沒有問題!

如何從android SDK源創建一個庫?

回答

3

this issue,它在ViewPager庫中的缺陷
還有就是要解決這樣的伎倆,但它不是最好的辦法

在你TabLayout XML加入這一行:

android:layoutDirection="ltr" 

這將防止TabLayout在RTL設備中鏡像,並且它將匹配ViewPager方向。

P.S.我在api 25上有同樣的問題,並支持庫25.1.0。這個竅門解決了它。

+0

感謝這種方法幫助我現在修復它! – hamidrezabstn