有什麼方法可以確保導航抽屜位於碎片內容的頂部嗎?導航抽屜 - 禁用點擊抽屜後面的物品
我用虛擬數據創建了一個小測試應用程序。 10個帶有相應編號按鈕和textview的片段。問題在於片段元素似乎比導航抽屜具有更高的優先級。
正如所看到的截圖,有一次我嘗試打開了「0片段」它,而不是選擇只登記在導航抽屜後面的按鈕點擊。按任何其他內容項目都可以正常工作,但只要在其下面沒有其他可交互項目,就可以。我可以做些什麼來讓導航抽屜正確地保持在它背後的內容之上?
有什麼方法可以確保導航抽屜位於碎片內容的頂部嗎?導航抽屜 - 禁用點擊抽屜後面的物品
我用虛擬數據創建了一個小測試應用程序。 10個帶有相應編號按鈕和textview的片段。問題在於片段元素似乎比導航抽屜具有更高的優先級。
正如所看到的截圖,有一次我嘗試打開了「0片段」它,而不是選擇只登記在導航抽屜後面的按鈕點擊。按任何其他內容項目都可以正常工作,但只要在其下面沒有其他可交互項目,就可以。我可以做些什麼來讓導航抽屜正確地保持在它背後的內容之上?
嗯,我發現這個問題的一個解決方案。當抽屜打開時,您可以通過在您使用的佈局上調用bringToFront()方法將導航欄放在前面。這可確保導航抽屜一直處於任何基礎內容之上,直到選擇了新項目爲止。
即:
@Override
public void onDrawerOpened(View drawerView)
{
activity.getActionBar().setTitle("Select content");
activity.invalidateOptionsMenu();
drawerLayout.bringToFront();
}
android:clickable =「true」對抽屜佈局是足夠的 – moondroid
它爲我工作 – silverFoxA
上滑動面板佈局設置android:clickable="true"
標籤。
的問題似乎不是因爲點擊焦點,
訪問https://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout
主要內容視圖(上述的FrameLayout)必須在DrawerLayout的第一個孩子,因爲XML訂單意味着Z排序抽屜必須位於內容之上。
在我的片段抽屜中,我設置了TouchListener以返回True。 它爲我工作
mFragmentContainerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
最好的解決方案,接受並沒有爲我工作。 – peresisUser
我解決了它以不同的方式。
這裏是我設置的抽屜代碼:
/**
* Setup Navigation Drawer
*/
private void setDrawer() {
NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer);
mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar);
}
的setup
方法是我NavigationDrawerFragment
裏面,這是我爲它的代碼:
/**
* Users of this fragment must call this method to set up the navigation drawer interactions.
*
* @param fragmentId The android:id of this fragment in its activity's layout.
* @param drawerLayout The DrawerLayout containing this fragment's UI.
* @param toolbar The Toolbar of the activity.
*/
public void setup(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
View mFragmentContainerView = (View) getActivity().findViewById(fragmentId).getParent();
DrawerLayout mDrawerLayout = drawerLayout;
//noinspection deprecation
mDrawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
ActionBarDrawerToggle mActionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, "Drawer opened", "Drawer closed") {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
if (!isAdded()) return;
// Solution:
// Disable click event on views below Navigation Drawer
mFragmentContainerView.setClickable(false);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
if (!isAdded()) return;
// Solution:
// Enable click event on views below Navigation Drawer
mFragmentContainerView.setClickable(true);
getActivity().invalidateOptionsMenu();
}
};
// Defer code dependent on restoration of previous instance state.
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mActionBarDrawerToggle.syncState();
}
});
//noinspection deprecation
mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
}
就是這樣
你有沒有嘗試設置actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); ? – Hruskozrout