1

안녕하세요 선형 레이아웃에 동적으로 뷰를 추가하려고합니다.동적 인 수평보기

난 그냥 addview에게 기능을하지만, 마지막 만 사용하여 내가 범주 이름 및 이미지 URL을 얻고 가로보기에서 선형 레이아웃에 모든 범주를 추가하려고합니다 웹 서비스에서

다음 필요 카테고리가 표시되었습니다.

아래 그림을 참조하십시오. 이미지가 동적으로 범주를로드해야하는 빨간색 사각형 부분이 표시된 레이아웃이 필요합니다. 그 부분은 수평 스크롤 할 수 있어야합니다. advacnce

에서

내가 여기 붙어 있었다 감사합니다.

enter image description here

+0

하십시오, 당신은 논평과 질문에 문제가 있는지 말 해주세요 않았다 여기에 몇 가지 다른 이들처럼 아래로 투표를하기 전에, 그렇지 않으면 나는 그것을 향상시킬 수 없다! –

답변

1

간단한 목록보기를 생성하고 내 레이아웃 XML

당신 예를 enter link description here

에게 작업 데이터 여기

을 설정하는 배열 어댑터를 사용하려면이 .use 사용자 정의 수평 목록보기를 만들
<com.jeekiarn.horizontal_listview.HorizoantalListView 
    android:id="@+id/hlvSimpleList" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" /> 


mHlvSimpleList = (HorizoantalListView) findViewById(R.id.hlvSimpleList); 
    CustomArrayAdapter adapter = new CustomArrayAdapter(this, mCustomData); 

    // Assign adapter to HorizontalListView 
    mHlvSimpleList.setAdapter(adapter); 
    mHlvSimpleList.setAdapter(adapter); 
2

맞춤 설정 가로 목록보기 어댑터 클래스 다음과 바인딩 등이

package com.sujith.custom_layout; 
import android.content.Context; 
import android.database.DataSetObserver; 
import android.util.AttributeSet; 
import android.view.View; 
import android.widget.Adapter; 
import android.widget.HorizontalScrollView; 
import android.widget.LinearLayout; 
import android.widget.FrameLayout.LayoutParams; 

public class GalleryHorizontal extends HorizontalScrollView{ 

private LinearLayout.LayoutParams defaultTabLayoutParams; 
private LinearLayout.LayoutParams expandedTabLayoutParams; 


private LinearLayout tabsContainer; 
private Adapter adapter; 
private DataSetObserver dataSetObserver=new DataSetObserver() { 

     @Override 
     public void onChanged() { 
      // TODO Auto-generated method stub 
      super.onChanged(); 
      reloadChildViews(); 
     } 

    }; 
public GalleryHorizontal(Context context) { 
    this(context, null); 
    // TODO Auto-generated constructor stub 
} 

public GalleryHorizontal(Context context, AttributeSet attrs) { 
    this(context, attrs, 0); 
    // TODO Auto-generated constructor stub 
} 

public GalleryHorizontal(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    // TODO Auto-generated constructor stub 

    setFillViewport(true); 
//  setWillNotDraw(false); 

    tabsContainer = new LinearLayout(context); 
    tabsContainer.setOrientation(LinearLayout.HORIZONTAL); 
    tabsContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
    addView(tabsContainer); 



} 
public void setAdapter(Adapter adapter) { 
    if (this.adapter == adapter) return; 
    this.adapter = adapter; 
    if (adapter != null) adapter.registerDataSetObserver(dataSetObserver); 
    reloadChildViews(); 
} 

private void reloadChildViews() { 
    tabsContainer.removeAllViews(); 
     if (adapter == null) return; 
     int count = adapter.getCount(); 
     for (int position = 0; position < count; ++position) { 
      View v = adapter.getView(position, null, this); 
      if (v != null){ 

       tabsContainer.addView(v); 

      } 
     } 

     tabsContainer.requestLayout(); 

} 

}에

+1

멋진 직장 ... 유지하세요. – Jeekiran