我開發了一個RTL應用程序,它使用TabLayout(可滾動模式)和ViewPager作爲滑動片段頁面!在測試了不同的api之後,我注意到api 17和18中TabLayout的異常行爲!rtl佈局方向的api 17和18的Tablayout問題
然後我想可能是我的xml或我的代碼有問題!我決定使用第三方庫來避免這個問題,但同樣的結果發生!
在與第三方庫所有者調查後,我們注意到庫和TabLayout都使用HorizontalScrollView,也許這就是問題所在!
調查鏈接:https://github.com/ogaclejapan/SmartTabLayout/issues/107
請指導我解決這個!
有沒有一種方法可以使用api 23和api 23中的HorizontalScrollView?
步驟來重現問題:
硬的方式:創建一個新的項目,並在使用中下面的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));
}
}
}
簡單的方法:使用以下鏈接並克隆庫並在仿真器17或18上運行演示! (在演示應用程序RTL節) - >https://github.com/ogaclejapan/SmartTabLayout
發生了什麼事:
1 - 標籤間移動在錯誤的方向
2 - 他們不會填充視口!在某些情況下,他們從屏幕中間開始! :((
- 什麼你認爲正確的行爲應該是:
正常行爲的研究就像是當其在API的工作19+
請確保您在RTL測試工作模式!LTR沒有問題!
如何從android SDK源創建一個庫?
感謝這種方法幫助我現在修復它! – hamidrezabstn