18

Я только что обновил мое приложение с помощью SDK 23 для SDK 24.Android - активность Главная/Стрелка вверх имеет дополнительный отступ/запас с SDK 24

Проблема возникла в моей деятельности, которые показывают вверх/Главная стрелка (т. Е. getSupportActionBar().setDisplayHomeAsUpEnabled(true)) в том, что теперь есть дополнительное (нежелательное) пространство между стрелкой вверх и названием действия.

Для операций, которые не имеют стрелки вверх, заголовок активности находится в том же месте, что и раньше, что предполагает, что дополнительное дополнение/маржа связано с стрелкой вверх, а не с названием действия.

Вопрос в том, как изменить макет, чтобы он выглядел одинаково с SDK 24, как это было с SDK 23?

Малый зазор между вверх стрелка и заголовок с помощью SDK 23: Small gap between Up arrow and title using SDK 23

Большой (нежелательный) разрыв между стрелка вверх и название с помощью SDK 24: Large (unwanted) gap between Up arrow and title using SDK 24

Вот мой старый билд .gradle (SDK 23):

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.example.myapp" 
     minSdkVersion 19 
     targetSdkVersion 23 
     versionCode 42 
     versionName "0.42" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.google.android.gms:play-services-vision:9.0.2' 
    compile 'ch.acra:acra:4.7.0' 
    compile 'com.android.support:support-v4:23.4.0' 
    compile 'com.android.support:recyclerview-v7:23.4.0' 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 
    compile 'com.android.support:support-v13:23.4.0' 
    compile 'com.journeyapps:zxing-android-embedded:[email protected]' 
    compile 'com.google.zxing:core:3.2.1' 
} 

Вот новый build.gradle (SDK 24):

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.example.myapp" 
     minSdkVersion 19 
     targetSdkVersion 24 
     versionCode 42 
     versionName "0.42" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.google.android.gms:play-services-vision:9.0.2' 
    compile 'ch.acra:acra:4.7.0' 
    compile 'com.android.support:support-v4:24.0.0' 
    compile 'com.android.support:recyclerview-v7:24.0.0' 
    compile 'com.android.support:appcompat-v7:24.0.0' 
    compile 'com.android.support:design:24.0.0' 
    compile 'com.android.support:support-v13:24.0.0' 
    compile 'com.journeyapps:zxing-android-embedded:[email protected]' 
    compile 'com.google.zxing:core:3.2.1' 
} 
+3

Кстати, вы можете использовать buildToolsVersion «24» – penguin

+0

Если я попробую, в нем говорится: «Не удалось найти Редактирование версии 24.0.0», но также дает ссылку для его установки. :-) (Кстати, проблема не устранена.) –

+0

Вы скачали Android SDK Build-tools из SDK-менеджера? – penguin

ответ

13

Я думаю, что это обивка является новым стандартом, чтобы соответствовать спецификациям материалов в SDK 24. Сначала вы должны скрыть по умолчанию название панели инструментов по этому коду:

getSupportActionBar(). setDisplayShowTitleEnabled (false);

Затем создайте файл с именем toolbar.xml и добавить эти коды в этом файле:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="56dp" 
    android:background="@color/primary_color" 
    app:theme="@style/ThemeOverlay.AppCompat" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    app:contentInsetStartWithNavigation="0dp"> 

    <TextView 
     android:id="@+id/toolbar_title" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="16dp" <!-- Add margin --> 
     android:layout_marginStart="16dp" 
     android:gravity="left|center" 
     android:text="Toolbar Title" <!-- Your title text --> 
     android:textColor="@color/white" <!-- Matches default title styles --> 
     android:textSize="20sp" 
     android:fontFamily="sans-serif-medium"/> 

</android.support.v7.widget.Toolbar> 

Как вы видите, вы можете контролировать все, что в этом файле. Посмотрите на эту линию в toolbar.xml:

приложение: contentInsetStartWithNavigation = "0dp"

Это то, что вы хотите. Удачи.

+0

ОК, поэтому основное требование здесь - заменить ActionBar на панель инструментов. Мне не нужен ваш TextView, поэтому это был мой toolbar.xml: ' ' –

+0

Я добавил панель инструментов к моим действиям, добавив '' в каждый файл макета деятельности. –

+0

И тогда самый простой способ обновить код всех моих действий состоял в том, чтобы добавить этот метод в мой файл BaseActivity (который распространяется все мои действия): –

1

попробуйте этот код, чтобы удалить нежелательные пространства использовать его в соответствии с вашим использованием: -

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar_bottom" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/red" 
    android:contentInsetLeft="0dp" 
    android:contentInsetStart="0dp" 
    app:contentInsetLeft="0dp" 
    app:contentInsetStart="0dp" 
    android:contentInsetRight="0dp" 
    android:contentInsetEnd="0dp" 
    app:contentInsetRight="0dp" 
    app:contentInsetEnd="0dp" 
    android:minHeight="?attr/actionBarSize"> 
</android.support.v7.widget.Toolbar>