2012-09-11 2 views
1

"AdapterView <ListAdapter>"을 확장하는 클래스 A를 만들고 데이터를 제공하는 "BaseAdapter"를 확장하는 클래스 D를 만듭니다.AdapterView 항목이 부모를 채우지 않음

문제는 모든 AdapterView 항목의 길이가 AdapterView의 길이로 늘어나지 않고 각 항목의 길이가 항목의 텍스트 길이와 동일하기 때 문에 다릅니다. 내가 "FILL_PARENT"로 설정할 수있는 모든 레이아웃 매개 변수를 설정했지만 그건 의미가 없습니다.

어떤 클래스를 검사해야합니까? AdapterView 하위 클래스 또는 BaseAdapter 하위 클래스 또는 AdapterView 항목의 TextView 하위 클래스? (나는 약간의 효과를 얻기 위해 TextView를 서브 클래스 화한다).

의 getView 방법 :

public View getView(int position, View convertView, ViewGroup viewGroup) { 

    ViewHolder holder; 
    if (convertView == null) { 
     convertView = LayoutInflater.from(context).inflate(
       R.layout.colselector_menu_item, null); 
     holder = new ViewHolder(); 

     convertView.setTag(holder); 

     TextView tv = new VerticalTextView(viewGroup.getContext()); 
     tv.setTextColor(Color.RED); 

     NewsInTimeApp app = (NewsInTimeApp) (((MainActivity) context) 
       .getApplication()); 
     tv.setTextSize(Integer.parseInt(app.getConfig().get(
       AppConfig.CFGNAME_UI_MAIN_COLSELECTOR_TEXTSIZE))); 
     ((LinearLayout) convertView).addView(tv); 
     holder.groupItem = tv; 

    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.groupItem.setText(list.get(position).getName()); 
    holder.collId = list.get(position).getId(); 

    return convertView; 
} 

colselector_menu_item.xml : 뷰를 추가 할 때

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#e1e1e1" 
android:orientation="horizontal" > 

<View 
android:layout_width="1dp" 
android:layout_height="fill_parent" 
android:background="@android:color/darker_gray"/> 

</LinearLayout> 
+0

모두 확인하십시오. 그들에 대한 코드를 보여주는 것도 도움이 될 것입니다. – Geobits

+0

@Geobits 적어도 3 가지 클래스와 3 가지 레이아웃 xml이 있으며 너무 지저분 해 보입니다. 스냅 샷을 업로드했습니다 : http://img38.imageshack.us/img38/606/9120120911103900.png 파란색으로 표시된보기는 팝업 안에있는 AdapterView이고 밝은 회색으로 표시된보기는 AdapterView 항목입니다. AdapterView의 높이가 어떤 항목보다도 높다는 것을 알 수 있습니다. – realjin

+0

맞아요.하지만 당신이 얻는 것은 "wrap_content"의 정의입니다. 그래서 뭔가가 올바르게 설정되지 않습니다. 모든 레이아웃을 확인하고 특히 코드를 팽창시키는 위치를 확인하십시오. 적어도, 어댑터의 getView 메소드의 코드를 붙여 넣으십시오. 매개 변수를 설정하거나 뷰를 팽창시키는 것이 범인이 될 수 있지만 코드를 전혀 보지 않아도 범위를 좁히는 것은 불가능합니다. – Geobits

답변

1

, 당신은 텍스트 뷰 자체에 대한 레이아웃 파라미터를 지정하지 않는 것입니다.

시도 :

(LinearLayout) convertView.addView(tv, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

하면 FILL_PARENT에 API < 8, 변경 MATCH_PARENT을 대상으로. 또한 콘텐츠를 세로로 줄이기를 원한다고 가정합니다.

+0

Greate, 그거야! BTW, 내 textview 세로 텍스트 뷰입니다 그래서 addView 메서드에서 사용하는 매개 변수는 실제로 "tv, LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT"입니다. 그리고 작은 질문이 있습니다. 제가 보여준 xml의 1px 뷰가 이미 "fill_parent"로 설정 되었기 때문에 왜 textview를 "fill_parent"로 설정해야합니까? – realjin

+0

런타임에 데이터를 shwing하기 때문에 실행 시간을 추가해야합니다. 그렇지 않으면 fill_parent에 데이터를 표시 할 수 없습니다. @realjin – Google

관련 문제