web-dev-qa-db-ja.com

RelativeLayoutをCoordinatorLayout内に配置する方法

Airbnbのように検索ボックスを再作成しようとしていますAndroid app。だからCoorinatorLayoutツールバーおよびRecyclerView

しかし、これらの2つのこと以外にコーディネーター内に何かを挿入すると、表示されません。ここに私のコードがあります:

<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/slidingLayout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">

<Android.support.design.widget.AppBarLayout
    Android:id="@+id/appbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="@color/red"
        app:layout_scrollFlags="scroll|enterAlways" />

</Android.support.design.widget.AppBarLayout>

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginLeft="50dp"
    Android:layout_marginRight="50dp"
    Android:layout_marginTop="20dp"
    Android:background="@drawable/rounded_background"
    Android:orientation="horizontal"
    Android:padding="6dp"
    app:layout_scrollFlags="scroll|enterAlways">

    <EditText
        Android:id="@+id/search"
        Android:layout_width="0dp"
        Android:layout_height="fill_parent"
        Android:layout_weight="6"
        Android:background="@null"
        Android:fontFamily="sans-serif-light"
        Android:hint="Unesite grad"
        Android:paddingLeft="16dp"
        Android:paddingStart="16dp" />

    <ImageView
        Android:id="@+id/cancelSearch"
        Android:layout_width="0dp"
        Android:layout_height="40dp"
        Android:layout_weight="1"
        Android:padding="10dp"
        Android:src="@drawable/ic_cancel" />
</LinearLayout>

<Android.support.v7.widget.RecyclerView
    Android:id="@+id/recyclerView"
    Android:layout_width="match_parent"
    Android:layout_height="fill_parent"
    Android:layout_below="@id/appbar"
    Android:background="#ffffff"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

しかし、実際にこれが機能する場合でも、RecyclerViewの上に検索ボックスを配置するのは困難です。

すべてをRelativeLayoutに入れようとしましたが、うまくいきませんでした。

ここに私が作成しようとしているものの写真もあります enter image description here

編集:

RelativeLayoutを使用したコードは次のとおりです。

<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/slidingLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

   <RelativeLayout
       Android:layout_width="match_parent"
       Android:layout_height="match_parent">

       <Android.support.design.widget.AppBarLayout
           Android:id="@+id/appbar"
           Android:layout_width="match_parent"
           Android:layout_height="wrap_content"
           Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
           Android:background="#00000000">

           <Android.support.v7.widget.Toolbar
               Android:id="@+id/toolbar"
               Android:layout_width="match_parent"
               Android:layout_height="?attr/actionBarSize"
               Android:background="@color/red"
               app:layout_scrollFlags="scroll|enterAlways"/>
   </Android.support.design.widget.AppBarLayout>

   <RelativeLayout
       Android:layout_width="fill_parent"
       Android:layout_height="fill_parent">
       <LinearLayout
          Android:layout_width="match_parent"
          Android:layout_height="wrap_content"
          Android:layout_marginLeft="50dp"
          Android:layout_marginRight="50dp"
          Android:layout_marginTop="20dp"
          Android:background="@drawable/rounded_background"
          Android:orientation="horizontal"
          Android:padding="6dp"
          app:layout_scrollFlags="scroll|enterAlways">

          <EditText
              Android:id="@+id/search"
              Android:layout_width="0dp"
              Android:layout_height="fill_parent"
              Android:layout_weight="6"
              Android:background="@null"
              Android:fontFamily="sans-serif-light"
              Android:hint="Unesite grad"
              Android:paddingLeft="16dp"
              Android:paddingStart="16dp" />

          <ImageView
              Android:id="@+id/cancelSearch"
              Android:layout_width="0dp"
              Android:layout_height="40dp"
              Android:layout_weight="1"
              Android:padding="10dp"
              Android:src="@drawable/ic_cancel" />
      </LinearLayout>
      <Android.support.v7.widget.RecyclerView
           Android:id="@+id/recyclerView"
           Android:layout_width="match_parent"
           Android:layout_height="fill_parent"
           Android:layout_below="@id/appbar"
           Android:background="#ffffff"
           app:layout_behavior="@string/appbar_scrolling_view_behavior" />
   </RelativeLayout>
18

私は少し似たようなことをしようとしていましたが、画面の下部に広告バナーがありました。私の解決策は、RelativeLayoutCoordinatorLayoutの外側にラップすることでした:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/main_layout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

  <Android.support.design.widget.CoordinatorLayout
      Android:layout_width="match_parent"
      Android:layout_height="match_parent"
      Android:layout_above="@+id/ad_view">

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

      <Android.support.v7.widget.Toolbar
          Android:id="@+id/toolbar"
          Android:layout_width="match_parent"
          Android:layout_height="?attr/actionBarSize"
          Android:background="?attr/colorPrimary"
          app:layout_scrollFlags="scroll|enterAlways"
          app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    </Android.support.design.widget.AppBarLayout>

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/my_list_view"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

  </Android.support.design.widget.CoordinatorLayout>

  <com.google.Android.gms.ads.AdView
      Android:id="@+id/ad_view"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"
      Android:layout_centerHorizontal="true"
      Android:layout_alignParentBottom="true"
      Android:layout_gravity="center|bottom"
      app:adSize="SMART_BANNER"
      app:adUnitId="@string/admob_id" />

</RelativeLayout>

RecyclerView内をスクロールすると、ツールバーが適切に非表示になり、すべてが正常に機能しているように見えます。もしあなたが似たような原則に従えばあなたが行くべきだと思います。

26
themanatuf

ステータスバーの白色を削除する場合は、次の行を削除する必要があります

<item name="Android:statusBarColor">@Android:color/transparent</item>`

v21/styles.xml

ありがとう。

0
Jorge Novo
<Android.support.design.widget.CoordinatorLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/slidingLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="@color/red"
            app:layout_scrollFlags="scroll|enterAlways"/>

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="50dp"
            Android:layout_marginRight="50dp"
            Android:layout_marginTop="20dp"
            Android:background="@drawable/rounded_background"
            Android:orientation="horizontal"
            Android:padding="6dp"
            app:layout_scrollFlags="scroll|enterAlways">

            <EditText
                Android:id="@+id/search"
                Android:layout_width="0dp"
                Android:layout_height="fill_parent"
                Android:layout_weight="6"
                Android:background="@null"
                Android:fontFamily="sans-serif-light"
                Android:hint="Unesite grad"
                Android:paddingLeft="16dp"
                Android:paddingStart="16dp"/>

            <ImageView
                Android:id="@+id/cancelSearch"
                Android:layout_width="0dp"
                Android:layout_height="40dp"
                Android:layout_weight="1"
                Android:padding="10dp"
                Android:src="@drawable/ic_cancel" />
        </LinearLayout>
    </Android.support.design.widget.AppBarLayout>

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/recyclerView"
        Android:layout_width="match_parent"
        Android:layout_height="fill_parent"
        Android:layout_below="@id/appbar"
        Android:background="#ffffff"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</Android.support.design.widget.CoordinatorLayout>

これがあなたのために働くかどうか確認してください。

0
Apurva Kolapkar