web-dev-qa-db-ja.com

Androidで1つのビューを別のビューの上に置くことは可能ですか?

小さなビューを別の大きなビューの上に配置できますか?たとえば、バックグラウンドでファイルを再生しているVideoViewがあります。この上、中央/コーナーのどこかに、別のImageViewを配置します。

ただし、線形/相対レイアウトでは、ビューは1つずつまたは相互に相対的にのみ配置でき、AbsoluteLayoutは推奨されません。だから私は何をしますか?

27
kiki

FrameLayouts下のビューの上に各ビューを重ねることができます。これはRelativeLayoutでも実現できます。

15
skorulis

FrameLayoutは最も単純なViewGroupであり、レイアウトXMLで定義された(またはプログラムで追加された)順序でViewsをスタックします。最初の方が低く、最後の方が上になります。

2つのViewsを積み重ねてオフセットし、ポイントをわかりやすくする例を次に示します。

enter image description here

これは、2つのTextViewボックスが重なっている実際のレイアウトXMLです。 2つのボックスのオフセットは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>
28

ButtonViewの上にビューを配置したい場合に備えて、これを使用します。 Android:elevation="7dp"ボタンの上に配置する必要があるビュー。

10
Roshan Halwai
<?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>
2
Kushal Ramola

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>
2
Edalat Feizi