Используя 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()));
}
}
}
Ну, я объясню, как решить проблему, теперь мой макет супер гладкий,
На самом деле я не знаю, как его решить, но
blockquote>
- я удалил все атрибуты
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>
У меня были проблемы с RecyclerView и CollapsingToolbarLayout (вообще не сваливались). Попробуйте использовать текущую версию 23.4. + Recyclerview, appcompat и design, если вы уже не делаете.
/**
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"
}
}
}**