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

RecyclerView

احسان  6 سال پیش  1 سال پیش
0 0

سلام دوستان

من توی برنامم از RecyclerView استفاده کردم  به صورت زیر

  mLayoutManager = new StaggeredGridLayoutManager(7, StaggeredGridLayoutManager.VERTICAL);
monthRecyclerView.setLayoutManager(mLayoutManager);
RecyclerView.Adapter monthAdapter = new MonthAdapter(populateMonthData(persianYear, persianMonth, persianDay), MonthActivity.this);

// Set the adapter for monthRecyclerView
monthRecyclerView.setAdapter(monthAdapter);
 
 

مشکل من اینجاست که وقتی   عناصر داخل ریسایکلر ویو بجای اینکه از راست شروع کنن به قرار گرفتن توی صفحه ، از سمت چپ قرار می گیرن!

برای حلش هم از  

android:layoutDirection="rtl"
 
 
استفاده کردم ولی فایده نداشت.
این قسمت مربوط به آیتم های ریسایکلرویو هستش :
 
 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:orientation="horizontal">


<TextView
android:id="@+id/recycleMonthItem_txt_day"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_weight="1.46"
android:gravity="right"
android:layout_gravity="right"
android:padding="2dp"
android:text="متن تست"
android:textColor="@color/white_text"
android:textSize="18sp"
android:textStyle="bold"
android:gravity:"right"/>


</LinearLayout>
 
 
و این قسمت هم مربوط به layout هستش که ریسایکلر ویو توش تعریف شده:
 
 
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/month"
android:orientation="vertical"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="25dp">


<android.support.v7.widget.Toolbar
android:id="@+id/toolBar"
android:layout_width="0dp"
android:layout_height="56dp"
android:background="#fff"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<TextView
android:id="@+id/monthActivity_txt_currentDay_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/currentday_number"
android:gravity="center"
android:paddingTop="8dp"
android:text="2"
android:textColor="#000000"
android:textSize="18sp"/>
</LinearLayout>

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

<TextView
android:id="@+id/monthActivity_txt_monthName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="اریبهشت"
android:textColor="#000000"
android:textSize="18sp"/>

<TextView
android:id="@+id/monthActivity_txt_year"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:gravity="right"
android:text="1396"
android:textColor="#000000"
android:textSize="18sp"/>
</LinearLayout>

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


<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
app:fab_colorNormal="#e53935"
app:fab_icon="@drawable/ic_add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"/>


<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view_daysNumber"
android:layout_width="0dp"
android:layout_height="0dp"
android:scrollbars="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolBar"
app:layout_constraintVertical_bias="0.942">
</android.support.v7.widget.RecyclerView>

</android.support.constraint.ConstraintLayout>
 

من توی منیفست SupportRtl رو که true می کنم همه چیز درست میشه منتها توی گوشی هایی که فارسی هستند جای آیتم ها و .. عوض میشه !

استفاده کردم ولی فایده نداشت.
ممنون میشم راهنمایی کنید

+1 0
سلام . مشکل در طراحی layout اداپبر هست . شما باید با استفاده از start and end برای margin , padding , gravity استفاده کنین (6 سال پیش)
+1 0
دقیقا دوستمون درست اشاره کردند. شما باید در طراحی از این موارد استفاده کنید. برای توضیحات بیشتر بهتره کدهای xml قرار بدید (6 سال پیش)
0 0
تمام کد ها رو قرار دادم ممنون میشم راهنمایی کنید (6 سال پیش)
+1 0
داخل تگ روت ایتم های ریسایکلر gravity و layout_gravity رو برابر end و right قرار بدید (6 سال پیش)
0 0
این کار رو هم کردم ، ولی باز هم جواب نداد ! (6 سال پیش)
0 0
داخل تگ روتی ک تگ ریسایکلر هم داخلش اینکارو باز انجام بدید.اگر نشد تگ رو ب linear تغییر بدید و تست کنید. (6 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Shadow  6 سال پیش
+1 0

خوب من از این لایوت منیجر استفاده کردم و مشکلی هم ندارد

اگه false بزاری از اسکرول می خوره به سمت چپ و true به سمت راست البته مال من اسکرول افقی شما به عمودی تغییرش بدین

     llm_new_album = new LinearLayoutManager(G.context, LinearLayoutManager.HORIZONTAL, false);
0 0
خیلی ممنون این لیوت مشکلی که داره نمیشه براش تعریف کرد که ایتم ها رو در چند تا ستون نمایش بده (6 سال پیش)
پاسخ به سوال 
احسان  6 سال پیش
0 0

ممنون از دوستانی که راهنمایی کردید . راه حل رو یک توی استک گفتند که عالی جواب داد برای شما هم میذارم که اگر به این مشکل خوردید وقتتون الکی نره :

کافیه تا یک کلاس تعریف کنید به صورت زیر :

 
package app.codenevisha.com.myapplication;

import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.util.AttributeSet;

public class RtlGridLayoutManager extends GridLayoutManager {

public RtlGridLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}

public RtlGridLayoutManager(Context context, int spanCount) {
super(context, spanCount);
}

public RtlGridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) {
super(context, spanCount, orientation, reverseLayout);
}

@Override
protected boolean isLayoutRTL(){
return true;
}
}

حالا بجای اینکه StaggredGridLayoutManager استفاده کنید از کلاس بالا استفاده کنید : مثل زیر


mLayoutManager = new RtlGridLayoutManager(MainActivity.this,7);
monthRecyclerView.setLayoutManager(mLayoutManager);
RecyclerView.Adapter monthAdapter = new MonthAdapter(populateMonthData(persianYear, persianMonth, persianDay), MainActivity.this);
0 0
منم همین مشکل رو داشتم خیلی راحت با کانستراکتورلیوت حل شد یعنی توی این نوع لایه ... هر حالتی بچینی همون حالت هم دیده میشه (1 سال پیش)
0 0
منظورتون كانسترينت‌ليوت(Constraint Layout) هست؟ یعنی بدون استفاده از این کلاس (RtlGridLayoutManager )، در لیوت مربوط به آیتم ها، به جای لینیرلیوت از کانسترینت‌لیوت استفاده کردید درست شد؟ (1 سال پیش)

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