마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview 배경 깨지는 문제

0 추천

listview 의 배경이미지를 주었을 경우 소프트 키보드가 올라오면 배경 이미지가 늘었다 줄었다 하면서 깨집니다.

카톡의 경우를 보면 키보드만 올라오고 배경 이미지는 고정이 되어 있더라고요...

어떻게 하면 이런식으로 처리가 가능할까요?

 

현재 사용중인 layout 파일 내용입니다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffffff"
    android:orientation="vertical" >
 
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
 
        <ImageButton
            android:id="@+id/btnBack"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:src="@drawable/btn_back" />
 
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:layout_weight="1"
            android:fontFamily="sans-serif-condensed"
            android:textColor="@color/lightGray"
            android:textSize="24sp" />
 
        <ImageButton
            android:id="@+id/btnMenu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:src="@drawable/btn_menu" />
    </LinearLayout>
 
    <View
        android:layout_width="fill_parent"
        android:layout_height="2dip"
        android:background="#FF909090" />
    
 
    <ListView
        android:id="@+id/listMessage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:cacheColorHint="#00000000"
        android:background="@drawable/back_image"
        android:transcriptMode="alwaysScroll" />
 
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal" >
 
        <ImageButton
            android:id="@+id/btnFileSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:src="@drawable/send_plus_button" />
    
        <EditText
            android:id="@+id/editMessage"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:textColor="#ff000000"
            android:ems="10" >
            <requestFocus /> 
</EditText>
 
        <ImageButton
            android:id="@+id/btnEmoticon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:padding="6dp"
            android:src="@drawable/emoticon_button" />
        
        <ImageButton
            android:id="@+id/btnMessageSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:src="@drawable/btn_send" />
    </LinearLayout>
 
</LinearLayout>
duckking (120 포인트) 님이 2013년 10월 14일 질문

1개의 답변

+1 추천
뷰 구조가 궁금하시면 DDMS의 devices의 메뉴 중 dump view 가 있습니다.

해당 기능을 사용하면 현재 화면의 뷰 구조를 알려줍니다.

 

해당 기능으로 카톡 화면을 보니까

리스트 뷰 뒤에 이미지뷰가 있습니다.

채팅방의 배경은 리스트 뷰의 배경으로 지정된 것이 아니라

이미지 뷰의 src로 지정되었을 가능성이 크죠.

그리고 화면이 줄어도 이미지가 그대로 있는 것으로 보면

scaleType을 matrix로 지정했겠죠.

그렇다면 src로 지정한 이미지는 화면에 맞게 리사이징된 bitmap을 사용했다는 것 됩니다.

 

정리하면 배경으로 사용할 이미지를 화면 사이즈에 맞게 리사이징 해서 bitmap으로 가지고 있고

이것을 리스트 뷰 뒤에 있는 이미지 뷰에 설정합니다.

이때 이미지 뷰의 scaleType은 matrix 입니다.
원조안드로이드 (58,190 포인트) 님이 2013년 10월 15일 답변
...