Android 关于图像点击问题

Android 关于图像点击问题,android,listview,android-viewpager,android-imageview,Android,Listview,Android Viewpager,Android Imageview,我有一个关于图像点击问题的问题: 我使用的是带有粘性的视差效果,在此情况下,我的Viewpager无法点击。 我的要求是,若用户点击了那个页面,那个么他应该重定向到另一个页面 我使用的是Viewpager而不是Imageview,Viewpager有一些图像滑动。 这不起作用。我得到了一系列图像 知道我错在哪里吗 谢谢 My Code: public class MainActivity extends ActionBarActivity { private TextView stick

我有一个关于图像点击问题的问题:

我使用的是带有粘性的视差效果,在此情况下,我的
Viewpager
无法点击。 我的要求是,若用户点击了那个页面,那个么他应该重定向到另一个页面

我使用的是Viewpager而不是Imageview,Viewpager有一些图像滑动。 这不起作用。我得到了一系列图像

知道我错在哪里吗

谢谢

 My Code:
 public class MainActivity extends ActionBarActivity {

 private TextView stickyView;
 private ListView listView;
 private View heroImageView;

 private View stickyViewSpacer;

 private int MAX_ROWS = 20;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    /* Initialise list view, hero image, and sticky view */
    listView = (ListView) findViewById(R.id.listView);
    heroImageView = findViewById(R.id.heroImageView);
    stickyView = (TextView) findViewById(R.id.stickyView);

    heroImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(CollectionDetailActivity.this, "click",  Toast.LENGTH_SHORT).show();
        }
    });

    /* Inflate list header layout */
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View listHeader = inflater.inflate(R.layout.list_header, null);
    stickyViewSpacer = listHeader.findViewById(R.id.stickyViewPlaceholder);

    /* Add list view header */
    listView.addHeaderView(listHeader);

    /* Handle list View scroll events */
    listView.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState)           {
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            /* Check if the first item is already reached to top.*/
            if (listView.getFirstVisiblePosition() == 0) {
                View firstChild = listView.getChildAt(0);
                int topY = 0;
                if (firstChild != null) {
                    topY = firstChild.getTop();
                }

                int heroTopY = stickyViewSpacer.getTop();
                stickyView.setY(Math.max(0, heroTopY + topY));

                /* Set the image to scroll half of the amount that of ListView */
                heroImageView.setY(topY * 0.5f);
            }
        }
    });


    /* Populate the ListView with sample data */
    List<String> modelList = new ArrayList<>();
    for (int i = 0; i < MAX_ROWS; i++) {
        modelList.add("List item " + i);
    }

    ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_row, modelList);
    listView.setAdapter(adapter);
 }
 }
我的代码:
公共类MainActivity扩展了ActionBarActivity{
私有文本视图stickyView;
私有列表视图列表视图;
私有视图;
私有视图粘滞视图间隔;
私有整数最大行数=20;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*初始化列表视图、英雄图像和粘滞视图*/
listView=(listView)findViewById(R.id.listView);
海洛因成像视图=findViewById(R.id.海洛因成像视图);
stickyView=(TextView)findViewById(R.id.stickyView);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(CollectionDetailActivity.this,“单击”,Toast.LENGTH_SHORT.show();
}
});
/*充气列表标题布局*/
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
视图列表标题=充气器。充气(R.layout.list_标题,空);
stickyViewSpacer=listHeader.findViewById(R.id.stickyViewPlaceholder);
/*添加列表视图标题*/
addHeaderView(listHeader);
/*处理列表视图滚动事件*/
setOnScrollListener(新的AbsListView.OnScrollListener(){
@凌驾
公共无效onScrollStateChanged(AbsListView视图,int scrollState){
}
@凌驾
public void onScroll(AbsListView视图、int firstVisibleItem、int visibleItemCount、int totalItemCount){
/*检查第一项是否已到达顶部*/
如果(listView.getFirstVisiblePosition()==0){
View firstChild=listView.getChildAt(0);
int-topY=0;
if(firstChild!=null){
topY=firstChild.getTop();
}
int-heroTopY=stickyViewSpacer.getTop();
setY(Math.max(0,heroTopY+topY));
/*将图像设置为滚动列表视图的一半*/
图1.setY(topY*0.5f);
}
}
});
/*使用示例数据填充ListView*/
List modelList=新的ArrayList();
对于(int i=0;i
查看层次结构,图像视图上的ListView和click事件将由ListView处理。ListView上的StickyView。如果需要处理单击事件图像视图,可以使用ListView的单击事件空间项(列表\标题布局)

更改您的:

heroImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(CollectionDetailActivity.this, "click",  Toast.LENGTH_SHORT).show();
        }
    });
此代码:

    stickyView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "stickyView clicked", Toast.LENGTH_SHORT).show();
        }
    });
并添加此项以处理ImageView的单击事件:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (position == 0) {
            Toast.makeText(MainActivity.this, "heroImageView clicked", Toast.LENGTH_SHORT).show();
        } else {
            //ListView item clicked
        }
     }
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(位置==0){
Toast.makeText(MainActivity.this,“HeroMageView已单击”,Toast.LENGTH_SHORT.show();
}否则{
//已单击列表视图项
}
}
});

查看层次结构,图像视图上的ListView和click事件将由ListView处理。ListView上的StickyView。如果需要处理单击事件图像视图,可以使用ListView的单击事件空间项(列表\标题布局)

更改您的:

heroImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(CollectionDetailActivity.this, "click",  Toast.LENGTH_SHORT).show();
        }
    });
此代码:

    stickyView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "stickyView clicked", Toast.LENGTH_SHORT).show();
        }
    });
并添加此项以处理ImageView的单击事件:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (position == 0) {
            Toast.makeText(MainActivity.this, "heroImageView clicked", Toast.LENGTH_SHORT).show();
        } else {
            //ListView item clicked
        }
     }
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(位置==0){
Toast.makeText(MainActivity.this,“HeroMageView已单击”,Toast.LENGTH_SHORT.show();
}否则{
//已单击列表视图项
}
}
});

您是否在该图像视图上添加了单击事件?是的。我想这就是为什么不单击此处发布代码的原因。@DivyangPatel库可能会帮助您胜过您在该图像视图上添加了单击事件?是的。我想这是为什么不单击此处发布代码的原因。@DivyangPatel库可能会帮助您退出我使用的是Viewpager如果是Imageview,那么如何管理此场景?我使用的是Viewpager而不是Imageview,那么如何管理此场景?