0

内部に 2 つの画像を含む画像ビューを作成しようとしています。その上に小さなインジケーターが付いた背景の写真。ただし、背景の写真は中央に配置され、メインの画像に合わせてスケーリングされるはずですが、画像の右下にインジケーターを表示しようとすることに固執しています。

さまざまな要素の重力特性をいじっても、実際には何も達成されないようです。

以下は、ドローアブル内の重力を設定するために使用しようとしたコードと、独自の重力セットを持つ LayerDrawable を含む XML 要素ですが、どちらも何もしないようです。

    Resources r = fragment.getActivity().getResources();
    Drawable[] layers = new Drawable[2];
    layers[0] = r.getDrawable(R.drawable.addcoverphoto);        
    layers[1] = r.getDrawable(R.drawable.project_active); // this is usually user-content instead 
    ((BitmapDrawable)layers[1]).setGravity(Gravity.RIGHT);
    LayerDrawable layerDrawable = new LayerDrawable(layers);
    image.setImageDrawable(layerDrawable);      

   <ImageView
    android:layout_width="100dp"
    android:layout_height="0dp"        
    android:id="@+id/todayPhotoView"
    android:scaleType="center"
    android:layout_gravity="bottom"/>
4

1 に答える 1

1

オーバーレイされた画像 (右下隅の画像) を、9 パッチの右下隅にある 9 パッチ画像にすることができます。それには、左端の 2 ピクセルと最上部の 2 ピクセルをスケーラブルな部分にする必要があります。そうすれば、ドローアブルは左と上で一致するように引き伸ばされ、画像は右下隅に残ります。

ソリューションにさらに柔軟性が必要な場合は、2 つの ImageView の周りにフレーム レイアウトを使用できます。最初のイメージビューを使用して写真を表示し、2 番目のイメージビューのレイアウト グラビティを bottom|right に設定し、layout_width と height に wrap_content を指定します。

于 2014-11-19T11:07:35.667 に答える