2015-10-29 13 views
27

に取り組んでいない、私は私の問題を解決するために、任意のを見つけることができませんでした。標高が解決策を検索した後のLinearLayout

私は私のアプリの大部分に影を生成し、いくつかの上昇を持っています。
しかし、特定の場所では、私はそれを動作させることができません。
(私は下の絵の上に矢印を置く場所それはだ)

enter image description here

ツールバーの下に白い領域がLinearLayout

レイアウトを表示するFragment次のとおりです。

<LinearLayout 
    android:id="@+id/panelAddress" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/button_flat_white" 
    android:elevation="10dp" 
    android:orientation="vertical" 
    android:padding="20dp" 
    > 
//some content 
</LinearLayout> 

フラグメントの親:

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawerLayout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <include 
      android:id="@+id/custom_toolbar" 
      layout="@layout/toolbar"/> 

     <RelativeLayout 
      android:id="@+id/mapLayout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <fragment 
       android:id="@+id/map" 
       class="com.google.android.gms.maps.SupportMapFragment" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> 

      <FrameLayout 
       android:id="@+id/fragment_container_top" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       /> 

      <FrameLayout 
       android:id="@+id/fragment_container_bottom" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true"/> 

     </RelativeLayout> 

    </LinearLayout> 

</android.support.v4.widget.DrawerLayout> 

あなたは私が私の標高を取得しない理由についての考えを持っていますか?

+0

直線レイアウトの背景に赤を塗りつぶすだけで、実際にその領域が何であるかを調べることができます。それは断片全体に広がっているかもしれません。 – CurlyCorvus

+0

@CurlyCorvus、それは正しい場所をとります.. –

+0

あなたのアンドロイドを試しましたか:outlineProvider = "bounds"あなたの断片ですか? –

答えて

44

ここで説明したようにhttps://stackoverflow.com/a/27518160/2481494影が描画されるように、いくつかの要件があります

  • スペースは両親で影のためには、グループを表示します。 bleeding182が述べたように、パディングは、シャドウがクリップされることがあります:

    (パディングを使用しないでくださいでframeLayout上のパディングもオフ影をカットします。)

    しかし、これを固定することができ、親ではandroid:clipToPadding="false"である。

  • 高層ビューには、影を投じるための背景が必要です。 @drawable/button_flat_whiteに関する情報がなければ、これがあなたのケースで問題であるかどうかはわかりません。

    :あなたの@drawable/button_flat_white何か問題が一時的にシンプルな色にあなたのLinearLayoutの背景を変更しようとする原因となるかどうかを確認するには

    <FrameLayout 
         android:id="@+id/fragment_container_top" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_alignParentTop="true" 
    
         android:clipToPadding="false" 
         android:paddingBottom="10dp"/> 
    

    :あなたはこのようなあなたでframeLayoutを変更する必要がありますあなたの問題を解決するために

-3

これは描画の問題で、マニフェストファイルに

<application 
    ... 
    android:hardwareAccelerated="true"> 
+1

それは問題ではありません。私が言ったように、私はすでにうまくいく仰角で多くの場所を持っています。そしてそれは問題を解決しません。/ –

+0

'' 'hardwareAccelerated'''を有効にする根拠は何ですか? –

+0

は魅力的に働きます...ありがとう –

2

をhardwardAcceleratedオプションを有効にしてください。

キャストシャドーは実際のビューの範囲外に描画されるため、親のレイアウトがビューに十分なスペースを「与えていない」とクリッピングされます。

フラグメントの親(線形レイアウト)のサイズが同じであるため、シャドウがクリップされます。下の余白をLinearLayoutに追加します。
これは底に少し余裕を持ってでframeLayoutでレイアウトをラップしてみてください解決しない場合は(パディングを使用しないでください。また、影を遮断しますでframeLayout上パディング)

1-2dpを行う必要があります。

11

CardViewをLinearLayoutの親として作成し、高度を達成することができます。

<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    card_view:cardUseCompatPadding="true" 
    card_view:cardElevation="4dp" 
    card_view:cardCornerRadius="3dp"> 

     <LinearLayout 
       android:id="@+id/panelAddress" 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/button_flat_white" 
       android:orientation="vertical" 
       android:padding="20dp"> 

      //some content 
     </LinearLayout> 
</android.support.v7.widget.CardView> 
+0

私はこれが最良のソリューションだと思う。 CardViews aaalwaysを使用しない他のものは、1つの問題または別の問題を引き起こします。 – RominaV

0

2番目のレイアウトに「marginTop」を追加すると便利です。

私はそれが私のためにその番組の影に動作します(一番下に、レイアウトの右側にある影のために)使用パディング右パディング底を持って
<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="90dp" 
    android:orientation="vertical" 
    android:elevation="5dp" 
    /> 

<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="match_parent" 
    android:layout_height="90dp" 
    android:orientation="vertical" 
    android:padding="5dp" 
    android:layout_marginTop="3dp" 
    /> 
0

そう描画可能な影が動作しない問題は、このようなことを行う、あなたは同じに直面した場合問題。

関連する問題