2013-12-11 4 views
0

layout_height가 wrap_content로 설정된 선형 레이아웃이있어서 레이아웃 높이가 텍스트 행 수에 따라 다릅니다.부모 레이아웃의 크기를 조정하지 않고 배경 이미지

문제는 내가 레이아웃의 배경으로 이미지를 설정하려고하지만 레이아웃 크기에 관계없이 이미지를 사용할 수 있는지, 나는 이미지를 상당히 만들었습니다. 높이가 크다. 목표는 레이아웃이 작 으면 이미지가 높이로 잘리는 것입니다. 그러나 나는 그것을 할 수 없다 : 나는 무엇을 시도하든, 레이아웃은 이미지 높이에 따라 크기가 조정된다.

그래서 어떻게 이미지를 배경으로 설정할 수 있지만 부모 레이아웃을 재현하지 못하도록 자르기 (물론 부모 레이아웃 크기를 알지 못합니다. 내부 텍스트에 의존하기 때문입니다) . 영어로

가 사전에 감사합니다 ... 나의 모국어가 아닌 내 질문에 분명하다 바랍니다.

편집 : 배경 이미지없이

이 원래 카드입니다 : 일부 코드 샘플 및 스크린 샷.

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/drill_background_img" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

    ... [Card Content Here] 

    </LinearLayout> 

</FrameLayout 

... 그 결과는 내 카드가 내 이미지의 높이로 뻗어입니다 :

Original

이미지보기 코드가 추가됩니다. 그러나 나는 그것을 원하지 않는다. 카드의 크기를 같게하고 싶습니다. 하지만 이미지 높이를 낮출 수는 없습니다. 카드가 더 많은 텍스트를 가질 수 있고 키가 더 커질 수 있으므로 이미지가 더 커야합니다.

enter image description here

+0

스크린 샷 개미 레이아웃 XML 파일을 여기에 게시하면 도움이 될 것입니다. –

+0

레이아웃을 제공하십시오 .... –

+0

많은 조합으로 테스트를 해본 결과 표시 할 레이아웃이 하나도 없습니다. 하지만 위의 코드를 편집하고 작동하지 않는 예제를 게시합니다. –

답변

0

나는 어떤 뷰 "배경"속성으로 사용하는 경우 이미지를자를 수 있다고 생각하지 않습니다. 이미지는 항상 전체 배경을 채우기 위해 늘려집니다. 일반적으로 배경을 위해서는 Nine Patches을 사용해야합니다. 익숙해지면 기능이나 UI 사양을 변경하여 일반 이미지 대신 사용할 수 있습니다. 이미지 자르기를 알고있는 유일한 방법은 ImageView에 있으며 이미지는 "배경"이 아닌 "src"로 설정됩니다.

크기를 변경할 수있는 구성 요소에서 고정 크기 이미지를 사용하지 않는 것이 일반적입니다. 또한 안드로이드에서 방향, 화면 크기, 화면 밀도에 대해 생각할 때 거의 모든 것이 크기를 변경한다는 것을 기억해야합니다.

+0

9 개의 패치가 없으며 이미지가 작동하지 않습니다. –

0

배경은 항상 컨테이너 크기에 맞게 크기가 조정됩니다. 그러나 FrameLayout 또는 RelativeLayout과 ImageView를 사용할 수 있습니다.

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:clipChildren="true"> 
    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     ...your content here... 
    </LinearLayout> 
</RelativeLayout> 
+0

나는 그것을 시도했지만 작동하지 않는다 ... –

1

이것은 가운데에있는 텍스트의 크기를 조정하는 선형 레이아웃 코드입니다. 테스트를 마쳤습니다.

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:orientation="vertical" 
    android:layout_centerHorizontal="true" 
    android:layout_marginLeft="25dp" 
    android:layout_marginRight="25dp"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/tvInfo" 
     android:textColor="#ffffff" 
     android:background="@drawable/toast_frame" 
     android:gravity="center" /> 
</LinearLayout> 

시도해보십시오. 여기서는 가장 작은 크기에 맞게 충분히 작은 이미지를 사용하고 있습니다. Android에서 자동으로 스트레칭됩니다. 이런 경우에는 9patch Images를 사용합니다.당신은 내가
** 수정 ** 변화

위의 준 코드로 테스트 할 수 있도록 또한 여기 toast_frame.9.png 파일을 uploded 한 this SO Answer

확인이 Link from developer.android.com

Simple online tool to generate 9patch 를 방문 9patch 더에 대해 알아야 할 사항

<FrameLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@drawable/drill_background_img"> 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

... [Card Content Here] 

</LinearLayout> 

</FrameLayout> 
<FrameLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:src="@drawable/drill_background_img" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

... [Card Content Here] 

</LinearLayout> 

</FrameLayout> 

이 기능이 잘되기를 바랍니다.

+0

답을 고맙다. 그러나 내가 올바르게 이해하면, 그것은 내 문제와 관련이 없다. 위의 편집 된 코드를 참조하십시오. 내 이미지는 9 패치가 될 수 없으며 카드가 클 수 있으므로 이미지가 커야합니다. –

+0

@ Stéphane 위의 편집 된 내용을 확인하고 도움이 되었으면 알려주세요! – dmSherazi

+0

답변 해 주셔서 대단히 감사합니다. 불행히도, 그것은 아무것도 바뀌지 않습니다. '<비트 맵 XMLNS : 안드로이드 = "http://schemas.android.com/apk/res/android" \t 안드로이드 : SRC = "@ 드로어 블/drill_background_img" \t 또한 비트 맵에 포장하려 android : gravity = "top | right | clip_vertical"/>' ...하지만 도움이되지 않았습니다. –

관련 문제