ListView의 셀 높이 조절이 안됩니다.


ListView의 셀 높이 조절이 안됩니다.

android:layout_height="70dp" 를 줘서 셀의 높이 70dp 로 나와야하는데

너무 크게 나옵니다. minheight도 해봤고 줄여도 봤고 늘려도 봤는데 변화가 없습니다.

  • SwipeMenuListView 오픈 소스를 사용했습니다.
<com.baoyz.swipemenulistview.SwipeMenuListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/inspectorListView"
        android:layout_gravity="center_horizontal" />
  • activity_ inspector_ list_ item.xml (리스트뷰 셀 구성)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:background="@drawable/bg_yellow">

    <ImageView
        android:id="@+id/thumbnail"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_gravity="left|center_vertical"
        android:layout_marginLeft="10dp" />

    <TextView
        android:id="@+id/itemInfo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:layout_marginLeft="30dp"
        android:layout_weight="1"
        android:textSize="15dp"
        android:textColor="@color/white"/>

</LinearLayout>
  • adapter 부분 입니다
private class InspectorAdapter extends ArrayAdapter {
        LayoutInflater mLayoutInflater;

        public InspectorAdapter(Context context, int resource, ArrayList<InspectorItem> list) {
            super(context, resource, list);
            mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view;
            ViewHolder viewHolder;
            if (convertView == null) {
                view = mLayoutInflater.inflate(R.layout.activity_inspector_list_item, parent, false);
                viewHolder = new ViewHolder();
                viewHolder.thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
                viewHolder.itemInfo = (TextView) view.findViewById(R.id.itemInfo);
                view.setTag(viewHolder);
            } else {
                view = convertView;
                viewHolder = (ViewHolder) view.getTag();
            }
            InspectorItem inspectorItem = (InspectorItem) getItem(position);
            viewHolder.thumbnail.setImageResource(inspectorItem.getThumbNail());
            viewHolder.itemInfo.setText(inspectorItem.getItemInfo());
            return view;
        }
    }

    private class ViewHolder {
        private ImageView thumbnail;
        private TextView itemInfo;
    }
  • 2016년 06월 01일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 03월 19일에 작성됨
    Software Engineer

조회수 448


1 답변


좋아요
3
싫어요
채택취소하기

코드로는 문제가 없어보입니다. activity_ inspector_ list_ item.xml 에서 LinearLayout의 android:background="@drawable/bg_yellow" 여기에서 쓰인 bg_yellow 는 색인지, 이미지파일인지 궁금합니다. 혹시 이미지라면 이미지의 높이가 큰것은 아닌지 확인해보세요.

그리고 이것은 다른 tip인데요. UI가 제대로 안나올때 android device monitor에서 제공하는 dump view 기능을 이용해보세요. 다른 앱의 UI구성을 보거나 내 앱의 view 계층구조가 제대로 구성되어있는지 분석할때 도움이 됩니다.

Android Device Monitor Dump View Hierarchy for UI Automator

  • 2016년 03월 19일에 작성됨
    안드로이드, 루비온레일즈

  • 백그라운드 이미지가 문제였네요. 생각지도 못한 부분이었네요 ㅎㅎ 요것때문에 삽질 엄청했는데 감사합니다!!! UI도 디버깅을 할 수 있다니 정말 좋은 팁 감사합니다^^    김선우   2016.3.19 18:02     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close