我有一个水平滚动视图(显然内部有一个视图组),我在创建活动时添加了一些视图。我想要一个视图在中间开始和结束,所以我需要分别向右和左分别给出第一个和最后一个视图的填充。由于大小不是在onCreate上测量的,我在onSizeChanged上计算了它们,但是视图的大小还没有计算出来,因此不存在。
public void add(ArrayList<String> list) {
for(String string : list) {
View view = inflater.inflate(R.layout.textview_with_indicator, null);
views.add(view);
((TextView)view.findViewById(R.id.text)).setText(string);
content.addView(view);
}
invalidate();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if(paddingSet && null != views && views.size() > 0) {
int paddingLeft = getWidth() - (views.get(0).getWidth()/2);
int paddingRight = getWidth() - (views.get(views.size()-1).getWidth()/2);
setPadding(paddingLeft, getPaddingTop(), paddingRight, getPaddingBottom());
paddingSet = true;
}
}
我认为我需要观察视图的大小变化而不是整个内容,但我不知道如何实现它。我试图将onGlobalFocusChanged实现为scrollview,但无法使其工作。任何想法都将不胜感激。