loading...
پرشین استک
fsfsdfs
PERSIAN STACK بازدید : 153 1396/06/16 نظرات (0)

من در حال ساخت یک بازی در اندروید استودیو هستم و یک مشکل با کامپوننت Grid View دارم . من نمی توانم آیتم های درون GrideView را مانند این تصویر ، وسط چین کنم . من چند روش مانند android:stretchMode یا android:layout_centerHorizontal را امتحان کردم ، اما جواب نداد .

این کد XML من است :

 

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@android:color/holo_orange_light"
android:layout_weight="8"
android:layout_gravity="center">

<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10px"
android:id="@+id/gridAnswersChar"
android:numColumns="8"
android:gravity="center">
</GridView>
</RelativeLayout>

 

عکس قبل

عکس بعد

 

پاسخ 1 :

امیدوارم که نیاز حتمی شما نباشد که از GridView استفاده کنید زیرا من معتقدم که این کار غیر ممکن است . اگر شما می توانید به جای آن از RecyclerView استفاده کنید ، من برای شما راه حلی دارم . در این راه حل شما مجبورید از FlexboxLayoutManager استفاده کنید که بخشی از پروژه FlexboxLayout گوگل است . پروژه FlexboxLayout

کد کامل این راه حل را  می توانید از لینک زیر بیابید .

 

ابتدا FlexboxLayoutManager را در ()MainActivity.onCreate نصب کنید :

 

FlexboxLayoutManager manager = new FlexboxLayoutManager(this,FlexDirection.ROW);
manager.setJustifyContent(JustifyContent.CENTER);

RecyclerView recycler = (RecyclerView) findViewById(R.id.recycler);
recycler.setLayoutManager(manager);

 

زمانی که مدیر طرح (layout manager) را ایجاد می کنیم ، FlexDirection.ROW را قرار می دهیم تا بگوییم که می خواهیم برنامه ها را به صورت افقی در آوریم . (یعنی پر کردن یک ردیف و سپس رفتن به ردیف بعدی، به جای پر کردن یک ستون و سپس رفتن به ستون بعدی).

سپس ()setJustifyContent را با استفاده از JustifyContent.CENTER فراخوانی می کنیم .

رفتار GridView و توانایی آنرا تقلید می کنیم  تا تعدادی ستون داشته باشیم .

این کد در ()MyAdapter.onCreateViewHolder است :

 

ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) itemView.getLayoutParams();
layoutParams.width = (parent.getWidth() / 4) - layoutParams.leftMargin - layoutParams.rightMargin;
itemView.setLayoutParams(layoutParams);

 

در اینجا (parent.getWidth() / 4) بسیار کلیدی است که باعث می شود هر کدام از آیتم ها یک چهارم عرض در دسترس نمایش داده شود . اگر تعداد ستون های دیگری را می خواهید ، به سادگی 4 تا 8 تغییر دهید، و غیره . ما همچنین leftMargin و rightMargin را از عرض کم می کنیم زیرا view ها دارای حاشیه هستند .

 

تصاویر نتیجه :

تصویر اول

تصویر دوم

 

 

صفحه اصلی

مطالب مرتبط
ارسال نظر برای این مطلب

کد امنیتی رفرش
درباره ما
Profile Pic
با توجه به اینکه بیشتر منابع برنامه نویسی از جمله وبسایت ها ، خارجی بوده و همچنین برای بسیاری از افراد از نظر ترجمه مشکل ساز می شود ، وبسایت ما ترجمه این منابع و در اختیار کاربران قرار دادن را هدف قرار داده است .
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    فروش قالب وردپرس دانلود نرم افزار – پوسته ایران دانلود
    فروش قالب وردپرس دانلود نرم افزار ایران دانلود : اگر به دنبال پوسته وردپرس فارسی برای سایت دانلودی تان هستید بدون شک قالب وردپرس ایران دانلود با سئو بالا و رابط کاربری زیبا میتواند نظرتان را جلب کند. در طراحی و کدنویسی...
    قالب وردپرس فروش فایل و محصولات مجازی – پوسته ایران تمز

    آیا میدانید توسط وردپرس و افزونه EDD میتوانید فروشگاهی آنلاین برای فروش کتاب و مقالات pdf، رام اندروید، قالب و افزونه وردپرس، نرم افزارهای کامپیوتر و موبایل و … راه اندازی و کسب درامد کنید؟ با استفاده از افزونه وردپرس ایزی دیجیتال...

    خرید قالب وردپرس پارس بلاگ

    پوسته پارس بلاگ، قالبی زیبا با کدنویسی استاندارد و حرفه ای می باشد که توسط گروه ایران تمز طراحی شده است. با خرید قالب وردپرس پارس بلاگ که دارای امکانات زیادی است میتوانید سایت فروش فایل و محصولات دانلودی راه اندازی کنید....

    آمار سایت
  • کل مطالب : 142
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 11
  • آی پی امروز : 2
  • آی پی دیروز : 28
  • بازدید امروز : 5
  • باردید دیروز : 45
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 5
  • بازدید ماه : 592
  • بازدید سال : 4,491
  • بازدید کلی : 116,506