ImageView
に影を付けたい。 TextView
にシャドウを適用すると、それを取得しますが、ImageView
に到達しません。この問題を解決するにはどうすればよいですか?
CardView を使用して、角の丸い背景と影を提供することもできます。それを使用するには、build-gradleのプロジェクトへの依存関係として、以下のように v7 CardView library を追加する必要があります。
dependencies {
compile 'com.Android.support:cardview-v7:23.0.1'
-------
}
注:
23.0.1
上記の行で尊敬されるバージョン。
そこで、ImageView
をCardView
で囲み、以下のような影を作りました。
<Android.support.v7.widget.CardView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
card_view:cardBackgroundColor="@Android:color/white">
<ImageView
Android:id="@+id/dish_image"
Android:layout_width="match_parent"
Android:layout_height="120dp"
Android:adjustViewBounds="true" />
</Android.support.v7.widget.CardView>
画像の周りに影を追加します。
注:それが良い回避策であるかどうかはわかりません。私は初心者です。
CardView
を実装しようとしましたが、これは同じことを実装するためのアイデアを与えてくれます。良くない場合は、理由をお知らせください。
これは、DevoxxでのRomain Guyのプレゼンテーションから取得されました。pdfが見つかりました here 。
_Paint mShadow = new Paint();
// radius=10, y-offset=2, color=black
mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000);
// in onDraw(Canvas)
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow);
_
お役に立てれば。
[〜#〜] notes [〜#〜]
Honeycomb以上ではsetLayerType(LAYER_TYPE_SOFTWARE, mShadow)
を呼び出す必要があることを忘れないでください。そうしないと影が見えません! (@Dmitriy_Boichenko)
SetShadowLayer
はハードウェアアクセラレーションでは残念ながら機能しないため、パフォーマンスが大幅に低下します(@Matt Wear)
ここ からの回答
Apiが21より大きい場合は、imageviewまたはButtonでxmlを試すことができます。 開発者向けサイトで読む
_Android:elevation="5dp"
_
ファイルshadow_rect.xmlを作成します
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item >
<shape
Android:shape="rectangle">
<solid Android:color="@Android:color/darker_gray" />
<corners Android:radius="0dp"/>
</shape>
</item>
<item Android:right="1dp" Android:bottom="2dp">
<shape
Android:shape="rectangle">
<solid Android:color="@Android:color/white"/>
<corners Android:radius="1dp"/>
</shape>
</item>
</layer-list>
そして、これをImageview内でAndroid:background = "@ drawable/shadow_rectとして使用します。
レイヤーリストのドロアブルを作成し、イメージとシャドウ用に2つのアイテム(ドロアブル)をその中に配置できます。
シャドウアイテムの位置とコンテンツは、シャドウを適用する場所(上、左、右、右と左など)とシャドウのスタイルに応じて変わる場合があります。