맞춤 설정 가로 목록보기 어댑터 클래스 다음과 바인딩 등이
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();
}
}에
하십시오, 당신은 논평과 질문에 문제가 있는지 말 해주세요 않았다 여기에 몇 가지 다른 이들처럼 아래로 투표를하기 전에, 그렇지 않으면 나는 그것을 향상시킬 수 없다! –