2014-11-19 4 views
0

내부에 두 개의 이미지가있는 이미지 뷰를 작성하려고합니다. 배경 위에 작은 표시기가있는 사진. 그러나 배경의 사진이 주 이미지에 맞게 가운데 맞추고 크기가 조정되는 반면 표시기는 이미지의 오른쪽 하단에 표시됩니다.다른 종류의 중력을 사용하여 LayerImageDrawable을 만드는 방법

다양한 요소의 중력 속성을 가지고 노는 것은 실제로 어떤 것도 달성하지 못하는 것 같습니다.

다음은 drawable 내부에 중력을 설정하려고 시도한 코드와 자체 중력 세트가있는 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"/> 

답변

1

당신은 오버레이 이미지 (오른쪽 아래 모서리의 하나) 이미지가 아홉 패치의 오른쪽 아래에 아홉 패치 이미지를 만들 수 있습니다. 그렇게하려면 가장 왼쪽에있는 두 개의 픽셀과 최상위 두 개의 픽셀을 확장 가능한 부분으로 만들어야합니다. 그렇게하면 드로어 블이 왼쪽 위의 이미지와 일치하도록 펼쳐져 오른쪽 하단에 이미지가 표시됩니다.

솔루션에 유연성이 더 필요하면 두 개의 ImageView를 중심으로 framelayout을 사용할 수 있습니다. 첫 번째 이미지 뷰를 사용하여 사진을 표시하고 layout_width가 & 인 wrap_content를 사용하여 두 번째 이미지 뷰의 레이아웃 중력을 오른쪽 하단으로 설정하십시오.

+0

그런 우아한 솔루션! 감사. – Erik