Android - تعبئة التخطيط مع الأزرار
-
19-09-2019 - |
سؤال
مجرد سؤال سريع حول كيفية استمرار تنفيذ هذا. أريد أن أكون هناك أزرار في الجزء السفلي من الشاشة، ولكن إذا كان حجم الشاشة أكبر، فسيتم إضافة المزيد من الأزرار.
على سبيل المثال، عند حجم شاشة صغيرة، قد يكون هناك 4-5 أزرار في الأسفل، ولكن إذا ركضت على جهاز لوحي أو شيء مشابه، فسيكون هناك 20 أزرارا.
أي اقتراحات؟ لا يمكن التمرير أيضا، يجب عليك فقط ملء التخطيط بشكل حيوي مع الأزرار.
شكرا.
المحلول
لوضع أزرار في الجزء السفلي من التصميم، قم بعمل شيء مثل هذا لتخطيطك:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout">
<LinearLayout
android:layout_height="wrap_content"
android:id="@+id/button_layout"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:gravity="center">
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"></Button>
<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"></Button>
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3"></Button>
</LinearLayout>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/button_layout"
android:id="@+id/content">
<ListView
android:id="@+id/ListView01"
android:layout_height="fill_parent"
android:layout_width="fill_parent"></ListView>
</FrameLayout>
</RelativeLayout>
لتغيير عدد الأزرار التي تظهر بناء على حجم الشاشة، يجب عليك تنفيذ تخطيطات منفصلة لأحجام الشاشة المتعددة ..
http://developer.android.com/guide/practices/screens_support.html.
نصائح أخرى
يبدو أنك تريد إنشاء فئة تخطيط مخصصة الخاصة بك. هذا أو مجرد ملء LINEARLAYOUT (على سبيل المثال) حتى تنفد مساحة الشاشة.
إذا كنت تعرف حجم الأزرار الخاصة بك في البكسل، فيمكنك استخدام أجهزة العرض للحصول على أبعاد الشاشة ثم احسب عدد الأزرار التي ستناسب مساحةك المخصصة.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
المقرري .HEightpixels Givs الارتفاع المطلق في مقر البكسلs.ydpi يعطي البكسلات الفيزيائية الدقيقة لكل بوصة من الشاشة
والتقييم. يعطي الكثافة المنطقية لأغراض التحجيم
انظر هنا: http://developer.android.com/Reference/android/util/displaymentss.html.
ثم فقط تفعل شيئا مثل
do{
Button button=new Button(context);
button.setText("yada yada")
button.allYoursettings....
.
.
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LinearLayout layout=(LinearLayout) findViewById(R.id.yourlayout);
layout.addView(button,p);
} while(havespaceleft);