2014-05-19 2 views
0

프로그래밍 방식으로 뷰를 추가하려고하는데 이미지 뷰의 크기가 동일하지 않습니다. 다른 뷰에서 사용하고 xml로 설정했습니다.보기를 추가하면 프로그래밍 방식으로 Android의 크기가 변경됩니다.

이 내가 추가 할 내 기능은 프로그램입니다 조회수 : 귀하의 의견을 팽창하는 동안 널 통과하기 때문에

public void initClaps(int size, List<Clap> claps) { 
    LayoutParams params = new LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    //LayoutParams params2 = new LayoutParams(0, LayoutParams.WRAP_CONTENT, 
    //  33); 
    LayoutParams params3 = new LayoutParams(0, 
      LayoutParams.WRAP_CONTENT, 1.0f); 
    int position = 0; 
    for (int i = 0; i < size; i++) { 
     LinearLayout layout = new LinearLayout(getActivity()); 
     layout.setWeightSum(3.0f); 
     layout.setOrientation(LinearLayout.HORIZONTAL); 
     if (i == 0) { 
      View view_add = in.inflate(R.layout.adapter_claps2, null); 
      layout.addView(view_add, params3); 

      for (int j = 0; j < 2; j++) { 
       View view_clap = in.inflate(R.layout.adapter_claps, null); 
       final Clap clap = claps.get(position); 
       FrameLayout fl = (FrameLayout) view_clap 
         .findViewById(R.id.fl_adapter_claps); 
       SmartImageViewRound siv = (SmartImageViewRound) view_clap 
         .findViewById(R.id.siv_adapter_claps); 
       TextView tv = (TextView) view_clap 
         .findViewById(R.id.tv_adapter_claps); 
       siv.setImageUrl(clap.getMini()); 
       tv.setText("" + clap.getNom()); 
       fl.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         Intent intent = new Intent(getActivity(), 
           ClapDetail.class); 
         intent.putExtra(ClapDetail.INTENT_NOM, 
           clap.getNom()); 
         getActivity().startActivity(intent); 
        } 
       }); 
       layout.addView(view_clap, params3); 
       position++; 
      } 
      ll_container.addView(layout, params); 
     } else { 
      for (int j = 0; j < 3; j++) { 
       if(position != claps.size()){ 
        final Clap clap = claps.get(position); 
        View view = in.inflate(R.layout.adapter_claps, null); 
        FrameLayout fl = (FrameLayout) view 
          .findViewById(R.id.fl_adapter_claps); 
        SmartImageViewRound siv = (SmartImageViewRound) view 
          .findViewById(R.id.siv_adapter_claps); 
        TextView tv = (TextView) view 
          .findViewById(R.id.tv_adapter_claps); 
        siv.setImageUrl(clap.getMini()); 
        tv.setText("" + clap.getNom()); 
        fl.setOnClickListener(new OnClickListener() { 

         @Override 
         public void onClick(View v) { 
          Intent intent = new Intent(getActivity(), 
            ClapDetail.class); 
          intent.putExtra(ClapDetail.INTENT_NOM, 
            clap.getNom()); 
          getActivity().startActivity(intent); 
         } 
        }); 
        layout.addView(view, params3); 
        position++; 
       } 

      } 
      ll_container.addView(layout, params); 
     } 
    } 
} 
+0

yould youll에 xml을 추가하고 결과 및 예상 결과의 스크린 샷을 추가하십시오. –

답변

0

이가 발생합니다.

은 (보기의의 ListView의 관점에서) 팽창 할 수있는 다음 뷰를 고려할 수 있습니다 :

우리가 같은 목록보기에 위의 XML 뷰를 추가하는 경우
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:gravity="center_vertical" 
    android:orientation="horizontal"> 
    <TextView 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingRight="15dp" 
     android:text="Text1" /> 
    <TextView 
     android:id="@+id/text2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Text2" /> 
</LinearLayout> 

:

public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     convertView = inflate(R.layout.item_row, null); 
    } 

    return convertView; 
} 

결과 : enter image description here

그러나 올바른 접근 방식 :

,
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     convertView = inflate(R.layout.item_row, parent, false); 
    } 

    return convertView; 
} 

결과 : enter image description here

더 많은 정보는 데이브 스미스 this nice post에서 찾을 수 있습니다.

부모 뷰 그룹으로 null을 대체해야합니다.

관련 문제