آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

راهنمایی درباره استفاده از Coordinator Layout

kamal_hajatmand  7 سال پیش  7 سال پیش
0 0

من توی برنامه میخوام برای صفحه نمایش پروفایل کاربر از scroll Coordinator Layout استفاده کنم. توی استک و چند تا سایت خارجی یه سری آموزش پیدا کردم ولی در همشون بعد از اسکرول شدن صفحه عکس بالای صفحه محو و تولبار نمایش داده میشه ولی من میخوام که پس از محو عکس یه لایه زیر تولبار اضافه بشه طوری که هم تولبار و داشته باشم و هم لایه ای که جدید و بعد از اسکرول اضافه شده 

برای انجام این کار چکاری باید بکنم ؟

 قبل از اسکرول        

بعد از اسکرول

0 0
کسی نمیتونه منو راهنمایی کنه ؟ (7 سال پیش)
0 0
خیلی دوس داشتم کمکت کنم ولی نفهمیدم چی میخوای ! میتونی دو تا تصویر از حالت صفر و حالتی که میخوای نهایتا بعد از اسکرول داشته باشی روبذاری ؟ (7 سال پیش)
0 0
لینک عکس رو اضافه کردم (خود عکس ها رو نتونستم اینجا آپلود کنم ) (7 سال پیش)
0 0
فرمت تصاویر را به حروف کوچک تبدیل کنید و سپس اپلود کنید. (7 سال پیش)
 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
sami  7 سال پیش
+1 0

 پاسخ صحیح

من دو تا فایل Xml براتون اینجا میذارم،که با توجه به نیازتون می تونید اونارو تغییر بدین و یا دوتا فایل رو با هم ترکیب کنید تا فقط یه فایل Layout داشته باشین.اما همه خصوصیاتی که توی هر دو فایل هست رو باید مدنظر داشته باشین(برای شروع بهتره اول فایلا رو کپی کنید).

فایل app_bar_activity_main.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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:nestedScrollingEnabled="true">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/main.collapsing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:id="@+id/imageView111"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="#ff0000" />

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

<TextView
android:id="@+id/txt_actionbar_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="Toolbar"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000000" />

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

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

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

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

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

 

فایل content_activity_main.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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/app_bar_activity_main">

<ImageView
android:id="@+id/imageView222"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00ff00" />

<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/imageView222"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

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


</RelativeLayout>

 

توی این دو فایل، imageView111 بعد از اسکرول محو میشه،اما imageView222 بعد از اسکرول،زیر Toolbar،قرار می گیره.پس شما باید لایه مورد نظر

خودتونو به جای imageView222 قرار بدین و بقیه محتوای لایه xml رو هم توی NestedScrollView قرار بدین.

 

 
0 0
دستتون درد نکنه ، من این دو تا فایل رو درست کردم و مقادیری رو که شما گذاشتین رو قرار دادم ، و در فایل content_activity_main.xml بعد از imageview یک تکست ویو قرار دادم که صفحه اسکرول بشه و در این حالت هم imageView111 و هم imageView222 نمایش داده میشن و هیچ کدوم اسکرول نمیشه ؟ لطفا این لینک رو ببینید (7 سال پیش)
+1 0
خواهش می کنم.این خصوصیت رو به تکست ویو تون اضافه کنید.app:layout_behavior="@string/appbar_scrolling_view_behavior".راستش من حدودا 5 ماه پیش،این فایلای xml رو ساختم و الان فقط برای شما بعضی جاهاشو کپی کردم،اگه ایندفعه درست نشد،باید صبر کنید تا توی اندروید استادیو چک کنم ،ببینم،مشکل از کجاست... (7 سال پیش)
0 0
اضافه کردم ولی بازم مشکل حل نشد. ممنون میشم اگه هر موقع وقت کردین یه نگاهی به کدهاتون بندازین . با تشکر (7 سال پیش)
+1 0
کدارو تغییر دادم،دوباره از اول،کدا رو کپی کنید.مشکل کار اینجا بود که باید از NestedScrollView یا RecyclerView استفاده کنید،تا اون حالت اسکرول شدن، تشخیص داده بشه(البته اگه یه کلاس سفارشی بسازید که دو اینترفیس مربوط به اسکرول شدن رو ایمپلمنت کنه،می تونید از اون کلاس سفارشی خودتون هم استفاده کنید.)بهر حال الان براحتی می تونید با استفاده از NestedScrollView مشکلتون رو حل کنید و نیازی به ساخت کلاس سفارشی نیست...در ضمن خصوصیت قبلی که تو کامنت قبلی نوشته بودم باید به المنتی که NestedScrollView رو در برگرفته اضافه می شد... (7 سال پیش)
0 0
دستتون درد نکنه فقط یه سوال دیگه : میشه کاری کرد که رنگ سبز در حالت اولیه invisible باشه و بعد از محو شدن رنگ قرمز Visible بشه ؟ (7 سال پیش)
پاسخ به سوال 
sami  7 سال پیش
+1 0

چون از NestedScrollView استفاده کردین،با کد زیر مشکلتون حل میشه :

 
NestedScrollView scroller = (NestedScrollView) findViewById(R.id.myScroll);
if (scroller != null) {
scroller.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (scrollY > oldScrollY) {
Log.i(TAG, "Scroll DOWN");
}
if (scrollY < oldScrollY) {
Log.i(TAG, "Scroll UP");
}
if (scrollY == 0) {
Log.i(TAG, "TOP SCROLL");
}
if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
Log.i(TAG, "BOTTOM SCROLL");
}
}
});
}

لینک منبع

اما اگه بعدا خواستین از RecyclerView استفاده کنید،از آموزشی که توی این لینک هست  استفاده کنید.

 

 

0 0
سلام یه سوال آیا باید از کوردینیتور لایوت ها به عنوان لایه اصلی استفاده کرد؟؟ یا نه نه برای اسکرول مثلا برای اسنک بار (7 سال پیش)
0 0
سلام.بله CoordinatorLayout رو بعنوان لایه اصلی بکار می بریم که سایر المان هارو در بر می گیره و باعث میشه که خود CoordinatorLayout و عناصر زیرمجموعه اش با هم تعامل داشته باشن. (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .