我一直在尋找一個相當長的解決方案。所以這就是我想要實現的。我有以下菜單實現的NavigationDrawer:只有當NavigationDrawer打開時才採取行動
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_dashboard"
android:icon="@drawable/ic_dashboard"
android:title="Dashboard" />
<item
android:id="@+id/nav_logbook"
android:icon="@drawable/ic_logbook"
android:title="Logbook" />
<item
android:id="@+id/nav_context"
android:icon="@drawable/ic_context"
android:title="Context" />
</group>
</menu>
當有添加新的背景下,我想加入的括號之間的新的更新量,以顯示這抽屜式導航用戶。像這樣的例子:Context (2)
當有兩個新的更新。
我想每次抽屜打開時檢查一次,但最好只檢查一次,因爲背後有一個相當繁重的SQL查詢。我知道我可以使用onDrawerOpened()
和onDrawerClosed()
,但我不喜歡這種解決方案,因爲只有當抽屜完全打開時,號碼纔會突然更新。所以它會保持一個數字,直到它完全打開,然後它會改變。這看起來很愚蠢。所以這就是爲什麼當導航抽屜開始打開時我會想改變一次。我發現沒有像樣的國家與聽衆一起檢查這件事,因爲只有STATE_IDLE
,STATE_DRAGGING
或STATE_SETTLING
,沒有什麼特別說明什麼時候打開和關閉,只是拖拽和安定。
此外,我還想保留片段上下文的標題停留「上下文」,而不是更改爲「上下文(2)」。這發生在我當前的代碼:
mToggle = new ActionBarDrawerToggle(
this,
mDrawer,
mToolbar,
R.string.drawer_open,
R.string.drawer_close
){
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
if (slideOffset != 0) {
Log.i(TAG, "onDrawerSlide() in update amount");
int amount = db.getAmountNoContext();
String sourcestring = "Context <b>(" + amount + ")</b>";
mNavigationView.getMenu().getItem(2).setTitle(Html.fromHtml(sourcestring));
}
}
};
這是工作在抽屜式導航欄更改菜單標題,但它也被連續叫了很多次,因爲偏移不斷變化。這是因爲SQL查詢不理想。我也嘗試將其設置爲一個特定的浮點值,如0.01
,但它沒有被觸發。另外我想提醒一下,我想在導航抽屜關閉時將菜單標題改回來,所以ActionBar中的片段標題只是說「上下文」。我已經完成了我的研究,但似乎我只是有一個非常具體的問題?也許你們有一個想法。提前致謝。