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

리스트뷰 헤더 높이 고정 문제 [closed]

0 추천

안녕하세요 안드로이드 초보입니다. 

밑에 스샷처럼 그래프가 상단에 존재하고 스크롤을 내리면 리스트를 보여주고자 

헤더를 이용하여 그래프를 띄우는 방식으로 구현했습니다. 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:id="@+id/graph"
            android:orientation="vertical"
            >
        </LinearLayout>
</LinearLayout>

헤더에 띄울 레이아웃을 400dp로 고정하였는데 막상 띄우면 두배인 800dp로 높이가 잡혀 스샷처럼

헤더가 있는 그래프 부분에 공백이 생깁니다. 혹시 이유를 좀 알 수 있을까요??

 

아래 내용은 그래프를 헤더에 추가하는 내용입니다.

View mChart;
mChart = ChartFactory.getLineChartView(this,dataset,multiRenderer);

graphLayout.removeAllViews();
graphLayout.addView(mChart);

listView.removeAllViewsInLayout();
listView.addHeaderView(header);

listView.setAdapter(graphListAdapter);
질문을 종료한 이유: 질문 해결
파워백곰 (770 포인트) 님이 2016년 1월 18일 질문
파워백곰님이 2016년 1월 18일 closed

1개의 답변

0 추천
 
채택된 답변
고정된 높이로 하려면 xml에서는 처음에 있는 LinearLayout이나 안에있는 LinearLayout 둘중에 한군데만 픽스해서 사용하시고 match_parent등을 써서 처리하시면 더 나을것 같구요,

리스트 뷰에서 addHeaderView를 했는데 저렇게 나온것을 보니, mChart라는 부분이 400이라는 영역을 다 못채우는게 아닐까 싶습니다. 일단 graphLayout 안에 들어가는 요소의 높이값들을 확인해보세요. 고정된 높이값 대신 wrap_content로 변경해서 어떻게 나오나 크기가 얼마나 되는지 확인해 보시는게 좋을것 같습니다.
캬옹이 (37,920 포인트) 님이 2016년 1월 18일 답변
파워백곰님이 2016년 1월 18일 채택됨
관심가져주셔서 감사합니다
이리저리 수정하다 보니 xml에서 저런식으로 했는데 안에있는 것만 400dp로 다시 고쳤습니다. (그래도 안되긴 하지만요)

mChart는 헤더 안에 있는 LinearLayout에 addview하는데 그 크기에 맞춰서 영역을 채우게 됩니다.
처음 화면이 세팅될때는 여백이 없이 잘 나오는데 일간 등의 버튼을 클릭해서 화면을 변경하면 저런식으로 헤더 높이가 두배로 잡히네요
아 그럼 일간 월간등 버튼을 클릭 할때 차트를 계속 remove / add 하는 작업을 하는건가요?
보통은 헤더안의 내용은 고정으로 쓰는데 헤더안의 내용이 바뀌는거군요..
그게 문제라면 removeHeaderView / addHeaderView로 헤더뷰 자체를 지웠다가 추가하는  방법도 있는데 될려나.. 장담은 못하겠네요..
removeHeaderView 사용하니 되네요 덕분에 잘 해결되었습니다
정말 감사합니다
다행이네요 ~ 좋은 해결책인진 모르겠지만.. 일단 되는게 우선이니..
좋은 앱 만드세요~
...