Я реализовал drawerlayout, который скользит справа, но не сдвигает активность, как это делает facebook (см. Ниже изображение). Как подтолкнуть текущую активность к правой стороне, когда пользователь нажимает кнопку opendrawer, как показано на рисунке выше. В настоящее время он появляется поверх активности и оставляет shadow.I действительно ценю любую помощь. Заранее спасибо.нажатие на действие справа при открытии выдвижного ящика
ответ
Я не думаю, что вы можете реализовать его с запасом DrawerLayout
, однако с SlidingMenu
вы можете, the GitHub repo here should explain all you need
Чтобы ответить на ваш вопрос. DrawerLayout ведет себя как ожидалось.
Вы можете использовать Slidingmenu (или Umano) в сочетании с DrawerLayout (я).
Наконец, в отношении того, что вы хотите (и что делает Facebook), Google сам не хочет, чтобы вы это делали. Они хотят, чтобы использовать выдвижной ящик так, как они используют его в Google Music (например)
Контакт Google сказал именно это мне:
- Навигационная ящик должна следовать новому guidelines и должна be implemented с использованием DrawerLayout и ActionBarDrawerToggle.
- Навигационный ящик не должен перемещать панель действия и должен отображаться как надпись над содержимым экрана.
- Навигационный ящик должен содержать только первичные навигационные элементы. Избегайте отображения элементов в навигационном ящике, которые обычно помещаются в панель действий, например «Настройки» или «Поиск». Blockquote
Так что не делать то, что делает Facebook. (Это хороший совет в любом другом контексте) :)
Это не рекомендуется, но вы можете переместить макет программно:
@Override
public void onDrawerSlide(View drawerView, float offset) {
View container = findViewById(R.id.container);
container.setTranslationX(offset * drawerView.getWidth());
}
Хотя нет по умолчанию способ не скользить активности наряду с навигацией ящик можно сделать с помощью кода. Как было предложено в приведенном выше ответе mick88, следующий фрагмент кода из моего проекта.
мой profile.xml файл
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- Framelayout to display Fragments -->
<RelativeLayout
android:id="@+id/mainView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
<!-- Listview to display slider menu -->
<RelativeLayout
android:id="@+id/drawerView"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="start" >
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/list_background"
android:divider="@color/list_divider"
android:dividerHeight="1dp" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
сейчас в деятельности
public class ProfileActivity extends ActionBarActivity {
....
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
RelativeLayout drawerView;
RelativeLayout mainView;
....
@Override
protected void onCreate(Bundle savedInstanceState) {
............. //
.............//
drawerView = (RelativeLayout) findViewById(R.id.drawerView);
mainView = (RelativeLayout) findViewById(R.id.mainView);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) {
public void onDrawerClosed(View view) {
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
supportInvalidateOptionsMenu();
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
mainView.setTranslationX(slideOffset * drawerView.getWidth());
mDrawerLayout.bringChildToFront(drawerView);
mDrawerLayout.requestLayout();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
}
намного лучше, чем добавление другой зависимости –
Спасибо за помощь! Я знал, что это возможно, без использования библиотеки :) –
Отлично работает, спасибо :) – Kartheek
Это действительно полезно. Поместите этот фрагмент в MainActivity.java
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
containerFrame.setTranslationX(slideOffset * drawerView.getWidth());
drawerLayout.bringChildToFront(drawerView);
drawerLayout.requestLayout();
//below line used to remove shadow of drawer
drawerLayout.setScrimColor(Color.TRANSPARENT);
}//this method helps you to aside menu drawer
};
OP получил ответ. Но для кого-то, кто хочет этого эффекта, можно использовать SlidingPaneLayout. Он предназначен для этой цели.
В файле XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SlidingPaneLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/mainFrame"
style="@style/MP.mainFrame" >
<!--****************************Right Pane ****************************-->
<LinearLayout style="@style/searchLayout">
<android.support.v4.widget.NestedScrollView style="@style/MP">
<LinearLayout style="@style/MP.verticalLinearLayout">
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
<!--****************************Right Pane ****************************-->
<!--****************************Left Pane ****************************-->
<FrameLayout style="@style/MP.mainLayout">
<LinearLayout android:id="@id/fragmentContainer" style="@style/MP.fragmentContainer"/>
<android.support.v7.widget.Toolbar style="@style/toolbar">
<ir.tooskar.excomponents.ExtendedTextView android:id="@id/appTitle" style="@style/WC.appTitle"/>
<ir.tooskar.excomponents.ExtendedTextView android:id="@id/appBarSearchIcon" style="@style/WC.appBarSearchIcon"/>
</android.support.v7.widget.Toolbar>
</FrameLayout> <!--****************************Left Pane ****************************-->
Есть две панели, справа и слева, склеиваются и, таким образом, двигаться вместе. Для меня левая панель является главной панелью, а справа скрывается значок переключения, чтобы отобразить ее. (Вид с идентификатором appBarSearchIcon).
Помните, что есть один ViewGroup имени, SlidingPaneLayout, что есть только два ребенка, The Left и правой.
И важную роль в деятельности:
slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.mainFrame);
// Sets a color for covering left pane(Main Pane)
slidingPaneLayout.setSliderFadeColor(ContextCompat.getColor(context, R.color.searchPaneFadeColor));
// The listener for Opening the Right pane(Hidden pane)
findViewById(R.id.appBarSearchIcon).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view){
slidingPaneLayout.openPane();
}
});
Закрытие правой панели осуществляется с помощью API, так же, как панель навигации.
- 1. выдвижного ящика меню справа налево
- 2. Позиция Панель выдвижного ящика панели ящика панели справа справа
- 3. Навигация Ящик отключает обратное просмотрение при открытии выдвижного ящика
- 4. Как предотвратить закрытие выдвижного ящика прикосновения вне выдвижного ящика
- 5. Как сделать половину выдвижного ящика?
- 6. выдвижного ящика выглядит полукругом
- 7. Высота выдвижного ящика ползунка
- 8. Передвижной ящик для выдвижного ящика
- 9. Как реализовать навигационную кнопку выдвижного ящика (гамбургер), которая оживляет кнопку возврата при открытии ящика
- 10. Уменьшение скорости выдвижного ящика
- 11. Полимер, закрывающий панель выдвижного ящика
- 12. Функция вызова на панели выдвижного ящика полимеров
- 13. Android выдвижного ящика не работает
- 14. Как сделать фоновое действие меньше при открытии ящика навигации?
- 15. Динамическое добавление выдвижного ящика MDL
- 16. Индикатор выдвижного ящика не отображается
- 17. Реализация нижнего скользящего выдвижного ящика
- 18. Получить раздвижное состояние выдвижного ящика
- 19. Анимация элемента ящика при открытии
- 20. Android - Создание выдвижного ящика слайд слева направо
- 21. Реализует скользящее меню без выдвижного выдвижного ящика Android
- 22. Панель инструментов становится более темной, чем обычно, при открытии выдвижного ящика
- 23. Как закрыть клавиатуру при открытии ящика навигации?
- 24. План выдвижного ящика Android для начала новой активности без выдвижного ящика
- 25. индикатор выдвижного ящика с поддержкой ActionBar
- 26. как добавить контроллер выдвижного ящика в android
- 27. Индикатор выдвижного ящика в магазине воспроизведения леденец
- 28. Материал-ui изменить высоту выдвижного ящика
- 29. Ошибка рендеринга выдвижного ящика в TableLayout
- 30. Android выдвижного ящика из различных фрагментов
Вот как работает [ящик андроида] (http://developer.android.com/design/patterns/navigation-drawer.html). Он не поддерживает скольжение, как вы этого хотите. Используйте [slidemenu] (https://github.com/jfeinstein10/SlidingMenu) для этого – sromku
Могу ли я встроить его в горизонтальное прокрутку, а затем поместить его в папку drawerlayout? – jason