Is dit moontlik om 'n uitsig oor 'n ander plek in Android?
-
26-09-2019 - |
Vra
Kan ons plaas 'n klein uitsig oor 'n ander groot oog? Byvoorbeeld, ek het 'n VideoView wat 'n lêer in die agtergrond speel. Oor hierdie, iewers in die middel / hoek, ek wil 'n ander ImageView plaas.
Maar in Lineêre / Relatiewe uitleg, sienings kan net geplaas een na die ander of relatief tot mekaar, en AbsoluteLayout is aangeraai om teen. So, wat kan ek doen?
Oplossing
FrameLayouts
laat jy elke oog op die top van die een hieronder stapel. Dit kan ook bereik word met 'n RelativeLayout
.
Ander wenke
Die FrameLayout
is die eenvoudigste ViewGroup
en stapels die Views
in die volgorde waarin hulle is gedefinieer in uitleg XML (of programmaties bygevoeg); die eerste sal laer wees, en die laaste sal wees op die top.
Hier is 'n voorbeeld waar twee Views
gestapel en verreken tot 'n beter illustreer die punt:
Hier is die werklike uitleg XML met die twee oorvleuelende TextView
bokse. Die geneutraliseer van die twee bokse is gedoen met behulp van android:layout_gravity
terwyl android:gravity
word gebruik vir die teks self sentreer In elke vak.
<?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>
Net in die geval as jy 'n oog te plaas op die top van 'n ButtonView dan dit gebruik;
android:elevation="7dp"
vir die oog wat nodig bo-op die knoppie om geplaas te word.
Jy kan dit ook doen deur gebruik te maak van ConstraintLayout 'n nuwe uitleg ingestel deur Google.
ConstraintLayout kan jy groot en komplekse layouts te skep met 'n plat oog hiërargie (geen geneste oog groepe).
<?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>