Подтвердить что ты не робот

Android - Activity Home/Up arrow имеет дополнительное дополнение /margin с SDK 24

Я только что обновил свое приложение с помощью SDK 23 до SDK 24.

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

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

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

Небольшой зазор между стрелкой вверх и заголовком с помощью SDK 23: Малый пробел между стрелкой вверх и заголовком с помощью SDK 23

Большой (нежелательный) разрыв между стрелкой вверх и заголовком с помощью SDK 24: Большой (нежелательный) разрыв между стрелкой вверх и заголовком с помощью SDK 24

Вот мой старый build.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'
}
4b9b3361

Ответ 1

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

getSupportActionBar() setDisplayShowTitleEnabled (ложь);.

Затем создайте файл с именем 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"

Это то, что вы хотите. Гудлак.

Ответ 3

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

<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>