هل من الممكن وضع وجهة نظر واحدة في Android؟
-
26-09-2019 - |
سؤال
هل يمكننا وضع منظر صغير على منظر كبير آخر؟ على سبيل المثال ، لديّ VideoView يقوم بتشغيل ملف في الخلفية. على هذا ، في مكان ما في الوسط/الزاوية ، أريد وضع صورة أخرى.
ولكن في التصميم الخطي/النسبي ، يمكن وضع وجهات النظر واحدة فقط تلو الأخرى أو بالنسبة لبعضها البعض ، ويتم نصح الطبع المطلق. اذا ماذا افعل؟
المحلول
FrameLayouts
دعك تتراكم كل عرض فوق واحد أدناه. يمكن أيضًا تحقيق ذلك مع RelativeLayout
.
نصائح أخرى
ال FrameLayout
هو أبسط ViewGroup
ويكدس Views
بالترتيب الذي تم تعريفه في التخطيط XML (أو إضافة برمجيًا) ؛ الأول سيكون أقل ، والأخير سيكون في القمة.
هنا مثال حيث اثنان Views
مكدسة وإزاحة لتوضيح النقطة بشكل أفضل:
هنا هو التخطيط الفعلي XML مع التداخل الاثنين TextView
مربعات. يتم إزاحة المربعين باستخدام android:layout_gravity
في حين android:gravity
يستخدم لتوسيط النص نفسه داخل كل صندوق.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="100dp">
<TextView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="top|left"
android:background="@android:color/holo_blue_light"
android:gravity="center"
android:text="First is below"/>
<TextView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="bottom|right"
android:background="@android:color/holo_green_light"
android:gravity="center"
android:text=" Last is on top"/>
</FrameLayout>
فقط إذا كنت ترغب في وضع طريقة عرض فوق A ButtonView ثم استخدم هذا ؛android:elevation="7dp"
للعرض الذي يجب وضعه أعلى الزر.
يمكنك أيضًا القيام بذلك باستخدام ConstraintLayout تخطيط جديد قدمه Google.
يتيح لك ConstraintLayout إنشاء تخطيطات كبيرة ومعقدة مع التسلسل الهرمي للمنظر المسطح (لا توجد مجموعات عرض متداخلة).
<?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:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="4"
tools:context="com.edalat.example.MainActivity">
<VideoView
android:id="@+id/videoView"
android:layout_width="283dp"
android:layout_height="349dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="24dp"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="24dp"
android:layout_marginRight="24dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="24dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintHorizontal_bias="0.509"/>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="24dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="24dp"
android:layout_marginLeft="24dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginRight="24dp"
app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/dp_20"
android:background="@color/yellow"
>
<VideoView
android:id="@+id/videoview"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:layout_height="300dp"
android:contentDescription="@string/app_name"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/camera"
android:layout_margin="30dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:id="@+id/imageView" />
</RelativeLayout>