適用於Android 4.0標籤的關鍵設計建議之一是allow swiping。此行爲使用戶能夠跨所選標籤的內容水平滑動以導航到相鄰標籤,而無需直接與標籤本身進行交互。如何在Android上的選項卡之間實現滑動?
這是如何實現的?
適用於Android 4.0標籤的關鍵設計建議之一是allow swiping。此行爲使用戶能夠跨所選標籤的內容水平滑動以導航到相鄰標籤,而無需直接與標籤本身進行交互。如何在Android上的選項卡之間實現滑動?
這是如何實現的?
注意:這是從Android Training類Implementing Effective Navigation的摘錄。
爲了實現這一點(在Android的3.0或以上)時,可以結合使用一個ViewPager與ActionBar選項卡API。
觀察當前頁面變化後,選擇相應的選項卡。您可以在活動的onCreate()
方法使用ViewPager.OnPageChangeListener設置此行爲:
@Override
public void onCreate(Bundle savedInstanceState) {
...
mViewPager.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// When swiping between pages, select the
// corresponding tab.
getActionBar().setSelectedNavigationItem(position);
}
});
...
}
而且在選擇一個選項卡,切換到相應的頁面中ViewPager。要做到這一點,利用newTab()
方法創建時,它添加一個ActionBar.TabListener到您的標籤:
actionBar.newTab()
...
.setTabListener(new ActionBar.TabListener() {
public void onTabSelected(ActionBar.Tab tab,
FragmentTransaction ft) {
// When the tab is selected, switch to the
// corresponding page in the ViewPager.
mViewPager.setCurrentItem(tab.getPosition());
}
...
}));
如果您在下面的Android 3.0針對API,則不能使用上述羅馬的解決方案。
我寫了一個blog post here關於如何使用ActionBarSherlock完成同樣的事情,如果任何人有興趣。
如果您添加Android可壓縮性支持庫http://developer.android.com/tools/extras/support-library.html,則可以使用早期版本的解決方案。使用最新的Eclipse ADT插件,只需右鍵單擊該項目並選擇「Android Tools」>「添加支持庫」即可。該項目必須針對API 14或更高版本(即Android 4+)構建,同時使用例如'
@ JesperB-如果我需要在我的TabHost中實現在Android 2.3.3下的Android應用程序定位API之間實現Swipe,並且不使用ActionBarSherlock,該怎麼辦?你能告訴我一些什麼嗎??? – 2013-01-02 07:12:16
@ JesperB-其實我已經使用tabview的應用程序工作得很好......我只需要更新滑動功能! – 2013-01-02 07:13:38
Hi Roman, 請研究一個實現ant adapter的示例,以實現包含多個動態創建/可替換片段的多個窗格佈局。挑戰: - FragmentManager使用資源ID來添加碎片ID在頁面間必須是唯一的(您不能指定ViewGroup實例作爲容器) - 在FragmentManager嘗試恢復片段之前,容器視圖必須存在 - 保留實例與方向更改錯誤 #1:FragmentManager嘗試保存時出現NullPointerException片段狀態; #2:LoaderInfo.onLoadComplete周圍的NullPointerException – user289463 2012-04-13 08:53:57
你應該問這是一個新問題。 – 2012-04-13 15:10:09
如果您將菜單圖標添加到操作欄並使用ViewPager,則會發生奇怪的事情... – Maxim 2013-05-09 05:24:48