HorizontalScrollView子控件如何实现监听

guolucky2003 2013-06-22 02:48:46
//自定义HorizontalScrollView(做一个标题栏)

public class ScrollTypeLayout extends HorizontalScrollView implements View.OnClickListener {
//前面省略,initView()是往里面加TextView
private void initView(){
this.mLayout.removeAllViews();
String[] typenameStrings ={"首页","新品","特价品","aaaa","bbbb","cccc","dddd"};

for(int i=0;i<typenameStrings.length;i++){
TextView localTextView = (TextView)LayoutInflater.from(this.mContext).inflate(R.layout.scroll_type_item, null);
String str = typenameStrings[i];
localTextView.setText(str);
localTextView.setId(i);
localTextView.setOnClickListener(this);
this.mLayout.addView(localTextView);
}
}
public void onClick(View paramView){
this.mViewId = paramView.getId();
this.invalidate();
}
}



public class MainActivity extends Activity {
public void onCreate(Bundle paramBundle)
super.onCreate(paramBundle);
setContentView(R.layout.main);
ScrollTypeLayout mScrollTypeLayout = (ScrollTypeLayout)findViewById(R.id.type_layout);

}
}

//我需要在MainActivity里监听HorizontalScrollView子控件的onClick事件,并且获取他的View.getId();

...全文
908 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34066768 2016-02-24
  • 打赏
  • 举报
回复
你这是什么DOME啊,一点不搭边
梅计搞笑 2014-12-17
  • 打赏
  • 举报
回复
这里有DEMO,可以参考http://download.csdn.net/detail/llfnqt/8268733
guolucky2003 2013-06-24
  • 打赏
  • 举报
回复
原来是因为我在子线程完成时再填TextView,所以主线程找不到,但现在又发现新问题,就是自定义控件没有执行Onclick事件,而调用他的Activiy可以触发了,不是可以两个都触发吗? 所以结贴了,再开一个来问.
南瓜饼 2013-06-24
  • 打赏
  • 举报
回复
控件要自己实现点击事件这个接口
guolucky2003 2013-06-22
  • 打赏
  • 举报
回复
引用 1 楼 wlianghe00 的回复:
View v = mScrollTypeLayout.getChildAt(0); for(int i = 0; i < v.getChildCount();i++) { View vv = v.getChildAt(i); vv.setOnClickL..(new Cl.///() { public void click(View view) { id= vv.getId(); } }) } 你试试
View没有getChildCount()属性,但mScrollTypeLayout.getChildCount();因为我在HorizontalScrollView下还加了LinearLayout,所以我这样写:

mScrollTypeLayout = (ScrollTypeLayout)findViewById(R.id.article_type_layout);
		LinearLayout mLinearLayout = (LinearLayout)mScrollTypeLayout.getChildAt(0);
		for(int i = 0; i < mLinearLayout.getChildCount(); i++)
		{
			View child = mLinearLayout.getChildAt(i);
			child.setOnClickListener(this);
		}
但还是不行,LinearLayout下面已经是我想要的TextView,但是mLinearLayout.getChildCount为0
Utopia 2013-06-22
  • 打赏
  • 举报
回复
也可以在ScrollTypeLayout加一个变量OnclickListener ,设置setter方法 然后把MainActivity的监听传过去
Utopia 2013-06-22
  • 打赏
  • 举报
回复
View v = mScrollTypeLayout.getChildAt(0); for(int i = 0; i < v.getChildCount();i++) { View vv = v.getChildAt(i); vv.setOnClickL..(new Cl.///() { public void click(View view) { id= vv.getId(); } }) } 你试试

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧