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

조회수 3542회

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;
    }

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

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)