在我的儀表板應用程序中,有一個應用程序欄,如下圖所示。在片段視圖中附加額外的工具欄
正如圖所示,我有一個工具欄,目前顯示導航抽屜。
從導航抽屜中,我可以導航到片段A,替換工具欄下的TAB區域,如下圖所示。
有什麼辦法,我可以添加兩個工具欄這樣的地方,我可以告訴一起片段內的導航抽屜圖標和後退按鈕?
在我的儀表板應用程序中,有一個應用程序欄,如下圖所示。在片段視圖中附加額外的工具欄
正如圖所示,我有一個工具欄,目前顯示導航抽屜。
從導航抽屜中,我可以導航到片段A,替換工具欄下的TAB區域,如下圖所示。
有什麼辦法,我可以添加兩個工具欄這樣的地方,我可以告訴一起片段內的導航抽屜圖標和後退按鈕?
沒有達到你在找什麼沒有最佳方式,考慮到它會對Android Design Guidelines。雖然沒有明確說明,但抽屜式圖標和後退按鈕圖標不會一起顯示。
這個設計背後的理論是導航應該是直觀和可預測的,兩個導航圖標相鄰顯示會損害直觀的用戶界面。 返回按鈕應顯示如果有什麼要去返回到。雖然,持久導航的需求可以通過兩種不同的方式解決。以Google的Gmail應用爲例。
默認情況下,NavigationView
支持使用屏幕左邊緣的輕掃作爲手勢打開導航抽屜。在Gmail應用程序中,當您位於任何一個收件箱中時,會顯示導航抽屜圖標。只要選擇一條消息,導航抽屜圖標就會被替換爲返回按鈕。但是,您會注意到您仍然可以使用之前所述的手勢訪問抽屜。
在更大屏幕上,Gmail應用支持微型導航抽屜。該抽屜可以保持在視圖中而不需要顯示導航圖標。儘管使用當前的支持庫實現起來要困難一點,但如果您期待,this answer可能會有所幫助。
最後,要回答你的問題,還有就是顯示一個後退按鈕和抽屜式導航圖標一起沒有內置的方式。如果您需要這樣做,唯一的方法就是像現在一樣使用「解決方法」。
雖然,我可能會做的唯一的變化是使用ImageButton
而非ImageView
。然後,您可以使用style="?android:attr/actionButtonStyle"
來設置按鈕的樣式,以模仿ActionBar
按鈕的外觀。
謝謝布賴恩,爲了拉出一些時間,並幫助我解決這個問題。我已經將ImageView替換爲ImageButton,這絕對看起來不錯。乾杯! –
只是爲了更新,暫時實現上述我所做的是。
我添加了一個佈局,我的片段文件,其中我畫一個自定義後退按鈕這樣的:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark20"
android:orientation="horizontal"
android:padding="15dp"
android:weightSum="3">
<ImageView
android:id="@+id/backButton"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:layout_weight="0.2"
android:src="@drawable/delete_icon" />
</LinearLayout>
當一個人點擊backImage,我打電話popBackStack
。
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
}
});
上面的代碼給了我所需的功能。
注意,對於上面的工作,你需要確保你所添加的fragmentTransaction到堆棧中,如下
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content_layout,NAME_OFYOUR_FRAGMENT,"nameOfYourFragment");
transaction.addToBackStack(null);
transaction.commit();
您可以隨時更新您的問題(點擊[*編輯*](http://stackoverflow.com/posts/38436040/edit)),這不屬於答案。 – Bryan
謝謝布萊恩。將爲未來記住這一點。 –
根據你的更新,它看起來像你找到了一種方法來實現你的要求。你只是要求一個*不同的方式來實現同樣的事情嗎?如果是這樣,爲什麼你目前的實施不足夠? – Bryan
我肯定找到了一種方法來實現這個問題,我在想如果有一個最好的實現上述,因爲我發佈的解決方案更多的是我想的解決方法.. –