gpt4 book ai didi

android - 如何在android中单击按钮显示特定页面的 View 寻呼机

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:11 27 4
gpt4 key购买 nike

我正在开发一个项目,其中我在一个屏幕上使用 View Pager,如下所示:

enter image description here

但是你可以在那里看到,有一个上层布局,其中列出了根据显示的页面选择的年份。当我们滑动 View 寻呼机时,年份也会根据显示的页面索引更改为下一个年份。我必须在将显示相应的 View Pager Page 的年份的 TextViews 上实现 Click 操作。但是如何实现呢?意思是当我们点击另一个 View 时,我们如何在 View 寻呼机中显示页面的特定索引。意味着当我们选择 1998 年时,页面将显示对应于 1998 年。我写了一个代码,但这对我不起作用。

代码:

for (int i = 0; i < (Overview_Years.size()); i++) {
tvYear[i] = new TextView(Overview_New.this);
img_Pagination[i] = new ImageView(Overview_New.this);

//yearValue = Overview_Years.get(i).toString();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
// params.weight = 0.5f;

params.gravity = Gravity.CENTER_VERTICAL;
params.setMargins(40, 4, 0, 0);


// tvYear[i].setLayoutParams(new
// LayoutParams(LayoutParams.WRAP_CONTENT,
// LayoutParams.WRAP_CONTENT));
tvYear[i].setLayoutParams(params);

// tvYear[i].setText(Overview_Years.get(i).toString());
tvYear[i].setText(Overview_Years.get(i).toString());
tvYear[i].setTag(Overview_Years.get(i).toString());

tvYear[i].setGravity(Gravity.CENTER);
tvYear[i].setTypeface(null, Typeface.BOLD);
tvYear[i].setTextColor(Color.WHITE);
tvYear[i].setId(i);
tvYear[i].setPadding(2, 0, 1, 17);
//tvYear[i].setTag(Overview_Years.get(i-1).toString());
final TextView tv = tvYear[i];
**tvYear[i].setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
for(int i=0;i<((ViewGroup)yearHorizontalScrollView.getChildAt(0)).getChildCount();i++){
if(((TextView)arg0)== ((ViewGroup)yearHorizontalScrollView.getChildAt(0)).getChildAt(i)){
currentposition = i;

}
}**

onYearSelect(((TextView)arg0).getText().toString());
}

});


layout_Years.addView(tvYear[i]);

LinearLayout.LayoutParams paramsPagination = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
// params.weight = 0.5f;

paramsPagination.gravity = Gravity.CENTER_VERTICAL;
paramsPagination.setMargins(5, 2, 0, 0);
img_Pagination[i].setLayoutParams(paramsPagination);
/*if (i == 0) {
img_Pagination[0]
.setBackgroundResource(R.drawable.pagination_selected);
} else {*/
img_Pagination[i]
.setBackgroundResource(R.drawable.pagination_unselected);
//}
img_Pagination[i].setId(i);
layout_Pagination.addView(img_Pagination[i]);

tvYear[0].setBackgroundResource(R.drawable.selector_x);
/*tvYear[0]
.setBackgroundResource(R.drawable.selector_x);*/
//tv_Overview_AllYears.setBackgroundResource(R.drawable.selector_bg_big_new);
count=-1;

}

提前致谢。

最佳答案

您应该能够在 OnClickListener 中使用 setCurrentItem 方法(下面的语法和文档),并且您的 viewpager 会自动滚动(如果 smoothScroll 未停用) 到新职位。

ViewPager.setCurrentItem(int index);
OR
ViewPager.setCurrentItem(int index, boolean smoothScroll);

在这种情况下,您将用 index 替换您想要的那个。因此,您可能还需要一个数组来存储年份和页面之间的关系,或者您可以在年份中设置一个 TAG(比如说位置),然后在 OnClickListener 上您可以检索该 TAG 并转到该位置。

参见 ViewPager docs了解更多信息

关于android - 如何在android中单击按钮显示特定页面的 View 寻呼机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11802341/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com