CollapsingToolbarLayout гладкая проблема с прокруткой [дубликат]

Используя Mvc Core, вы можете создать аккуратный TagHelper scripts, как показано ниже. Это можно легко превратить в тэг section, где вы также дадите ему имя (или имя берется из производного типа). Обратите внимание на то, что для IHttpContextAccessor необходимо настроить инъекцию зависимостей.

При добавлении скриптов (например, в частичном)

<scripts>
    <script type="text/javascript">
        //anything here
    </script>
</scripts>

При выводе сценариев (например, в файле макета)

<scripts render="true"></scripts>

Код

public class ScriptsTagHelper : TagHelper
    {
        private static readonly object ITEMSKEY = new Object();

        private IDictionary<object, object> _items => _httpContextAccessor?.HttpContext?.Items;

        private IHttpContextAccessor _httpContextAccessor;

        public ScriptsTagHelper(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            var attribute = (TagHelperAttribute)null;
            context.AllAttributes.TryGetAttribute("render",out attribute);

            var render = false;

            if(attribute != null)
            {
                render = Convert.ToBoolean(attribute.Value.ToString());
            }

            if (render)
            {
                if (_items.ContainsKey(ITEMSKEY))
                {
                    var scripts = _items[ITEMSKEY] as List<HtmlString>;

                    var content = String.Concat(scripts);

                    output.Content.SetHtmlContent(content);
                }
            }
            else
            {
                List<HtmlString> list = null;

                if (!_items.ContainsKey(ITEMSKEY))
                {
                    list = new List<HtmlString>();
                    _items[ITEMSKEY] = list;
                }

                list = _items[ITEMSKEY] as List<HtmlString>;

                var content = await output.GetChildContentAsync();

                list.Add(new HtmlString(content.GetContent()));
            }
        }
    }
3
задан usr2564301 11 September 2016 в 12:45
поделиться

3 ответа

Ну, я объясню, как решить проблему, теперь мой макет супер гладкий,

На самом деле я не знаю, как его решить, но

  • я удалил все атрибуты android:fitsSystemWindows="true".
  • добавил атрибут app:layout_scrollFlags="scroll|enterAlways" в CollapsingToolbarLayout, ImageView и Toolbar.
  • И переместил все элементы перед моим AppBarLayout в xml.

Мой activity_profile.xml нравится:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/apk/res-auto"
    android:id="@+id/profileCoordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<ProgressBar android:indeterminate="true"
    android:layout_width="50dp" android:layout_height="50dp"
    android:id="@+id/profile_activity_progress" 
    style="?android:attr/progressBarStyle"
    android:layout_gravity="center_vertical|center_horizontal"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:visibility="visible" />

<ProgressBar android:indeterminate="true"
    android:layout_width="50dp" android:layout_height="50dp"
    android:id="@+id/profile_activity_progress_edit" 
    style="?android:attr/progressBarStyle"
    android:layout_gravity="center_vertical|center_horizontal"
    android:visibility="gone" />


<include layout="@layout/content_profile_edit"/>


<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/profile_recyclerview"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:layout_margin="@dimen/fab_margin"
    app:layout_anchor="@+id/profileactivity_appbar"
    app:layout_anchorGravity="bottom|right|end"
    app:backgroundTint="@color/ColorPrimary"
    android:src="@drawable/ic_create_white_48dp"/>

<android.support.design.widget.AppBarLayout
    android:id="@+id/profileactivity_appbar"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:visibility="gone"
    android:theme="@style/AppTheme3.AppBarOverlay">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/profileactivity_collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|enterAlways"
        app:statusBarScrim="@color/ColorPrimaryDark"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleMarginEnd="64dp">

        <ImageView
            android:id="@+id/profileactivity_fullimage"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            app:layout_scrollFlags="scroll|enterAlways"
            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_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_collapseMode="pin" />

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

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

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

И content_profile_edit.xml как:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/profile_edit_layout"
    android:layout_alignParentBottom="true"
    android:visibility="gone"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:id="@+id/profile_fragment_nested"
    android:layout_height="match_parent"
    android:padding="10dp">

   <!-- other views -->

</android.support.v4.widget.NestedScrollView>

</RelativeLayout>
9
ответ дан Yasin Kaçmaz 19 August 2018 в 02:52
поделиться
  • 1
    как подключить панель инструментов и вкладку – Bincy Baby 23 May 2017 в 11:23
  • 2
    @BincyBaby Я не совсем понимаю вас, но вы можете проверить выпуски cheesesquare – Yasin Kaçmaz 23 May 2017 в 14:11
  • 3
    Этот метод работает отлично, но если бы я хотел вывести панель инструментов и tablayout, это не сработает – Bincy Baby 24 May 2017 в 04:12
  • 4
    @Bincy Baby dude Я готов помочь вам, но вы должны предоставить какой-то код, и я должен увидеть, что у вас есть прямо сейчас. – Yasin Kaçmaz 24 May 2017 в 09:36
  • 5
    @ YasinKaçmaz предупреждает: если помещено FAB над AppBarLayout, идентификатор layout_anchor не будет основан – Denis Makovsky 7 July 2017 в 09:49

У меня были проблемы с RecyclerView и CollapsingToolbarLayout (вообще не сваливались). Попробуйте использовать текущую версию 23.4. + Recyclerview, appcompat и design, если вы уже не делаете.

1
ответ дан b00n12 19 August 2018 в 02:52
поделиться
  • 1
    Моя проблема не разрушает проблему. Если вы просматриваете видеоролик, когда я прокручиваю, касаясь коллапсирующего изображения, его супер гладкий. Но при прокрутке с recyclerview он не является гладким, как свернутое изображение. – Yasin Kaçmaz 25 May 2016 в 19:18
  • 2
    Вы пробовали последнюю версию API? Может быть ошибка, которая была исправлена. Я пробовал ваш макет, и все работает нормально. – b00n12 26 May 2016 в 07:58
  • 3
    я обновил все это до версии 23.4.0. Но та же проблема здесь. – Yasin Kaçmaz 26 May 2016 в 12:20
  • 4
    да, я обновил recyclerview и изменил scrollflags. Тогда моя проблема исчезла. благодаря – Yasin Kaçmaz 16 June 2016 в 12:12
/**
google solve this issue in 26 api level .I spent my whole day finally I found this answer. For Demo You create  one android studio Scrolling Activity and do following changes upgrade all repository to 26 version and you will see this scrolling smoothly effect.
**/

apply plugin: 'com.android.application'

android {
    **compileSdkVersion 26
    buildToolsVersion "26.0.1"**
    defaultConfig {
        applicationId "com.example.sandeep.quantauser"
        minSdkVersion 19
        **targetSdkVersion 26**
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile files('libs/ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar')
    compile files('libs/apache-jakarta-commons-net-1.4.1.jar')
    compile 'com.theartofdev.edmodo:android-image-cropper:2.4.+'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    testCompile 'junit:junit:4.12'
    compile files('libs/itextpdf-5.4.0.jar')
    **compile "com.android.support:support-core-utils:26.0.2"
    compile 'com.android.support:design:26.0.2'
    compile 'com.android.support:appcompat-v7:26.0.2'
    compile 'com.android.support:cardview-v7:26.0.2'**
}

**allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}**
1
ответ дан sandeep mali 19 August 2018 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: