2015-06-16 2 views
2

Я хочу использовать в своем приложении аналогичную схему для @chrisbanses cheesesquare (https://github.com/chrisbanes/cheesesquare).CollapsingToolbarLayout/ошибка маркера панели инструментов

Все отлично работает на Nexus 5,6. Но когда вы тестируете его на других устройствах, таких как Samsung S6, Sony Z3 Compact, кнопки на панели инструментов не видны.

enter image description here

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/detail_backdrop_height" 
    android:fitsSystemWindows="true" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginEnd="64dp" 
     app:expandedTitleMarginStart="48dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <ImageView 
      android:id="@+id/backdrop" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      android:scaleType="centerCrop" 
      android:src="@drawable/default_vehicle" 
      app:layout_collapseMode="parallax" /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    </android.support.design.widget.CollapsingToolbarLayout> 

Это мой макет. Я не могу найти способ исправить это. Вы можете попробовать запустить Cheesesquare по телефону, например, Samsung S с 5.0.2 Android. Я также тестировал устройства Sony. Такой же. Телефон Nexus в порядке.

У вас есть идеи, как это исправить?

Я использую com.android.support:design:22.2.0 (последняя версия)

ответ

3

OK. У меня есть подтверждение. Это ошибка в библиотеке поддержки дизайна 22.2.0. Дополнительная информация: https://code.google.com/p/android/issues/detail?id=176647

Если вы знаете об обходном пути, прежде чем Google опубликует исправление, я буду благодарен.

Существует обходной путь для панели инструментов и отсутствие кнопки проблемы (неправильное положение)

if (Build.VERSION.SDK_INT != 21) return; 

final int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); 
final int result = (resourceId > 0) ? getResources().getDimensionPixelSize(resourceId) * 2 : 0; 
final CollapsingToolbarLayout.LayoutParams params = 
     (CollapsingToolbarLayout.LayoutParams) toolbar.getLayoutParams(); 
params.topMargin -= result; 
toolbar.setLayoutParams(params); 

EDIT: Google обновил Поддержка библиотеки. Эта ошибка была исправлена ​​в 22.2.1 версия. Просто обновите библиотеку поддержки и используйте последнюю версию, и все будет хорошо.

+0

Это работает, но проблема в том, что он очищает все пункты меню, которые у меня были на панели инструментов, такие как значок для навигационного ящика. Какие-либо предложения? – qazimusab

1
if ("samsung".equals(Build.MANUFACTURER) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     Toolbar toolbar = getToolbar(); 
     ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams(); 
     lp.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, -47, getResources().getDisplayMetrics()); 
     toolbar.setLayoutParams(lp); 
    } 
+0

Это только для Samsung. Если вы проверите другие телефоны, это не сработает - например, Sony Z3, OnePlus One. Легко создать исправление только для одного. Хорошие новости о том, что эта проблема исправлена ​​Google, и вскоре мы увидим обновленную библиотеку поддержки. – adek

Смежные вопросы