Enlarging the middle element in a listview - android?

后端 未结 2 840
青春惊慌失措
青春惊慌失措 2020-12-10 19:07

Im trying to Enlarge the Centre most listview item. (Eventually, I hope to expand this into a sort of simple and light 3D effect that elements will appear to zoom in when in

2条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-10 19:22

    1st no text appearing

    On your MySimpleArrayAdapter, getView method. You forgot to setText for your textView. There is why no text is showing.

    2nd make middle item bigger

    You try to getLastVisiblePosition before your listview adapter is setup. I guess value of v must be 0 and position == 0. There is why the topper item become bigger. If you try change it to position == 1 or 2, maybe the second or third item will become bigger.

    In order to make middle item become bigger, setOnScrollLinstener to listview

    public int currentLargedPosition = 0 // global value
    
    listView.setOnScrollListener(new OnScrollListener(){
    
        @Override
        public void onScroll(AbsListView arg0, int firstVisibleItem, int visibleItemCount, int totalItemCount){
            Log.i("Scroll","first "+firstVisibleItem+", visibleItemCount "+visibleItemCount+",totalCount "+totalItemCount); 
            int center = (visibleItemCount)/2 + firstVisibleItem;
            if(currentLargedPosition != center){
                enlargeMiddleView(currentLargedPosition-firstVisibleItem, center-firstVisibleItem);
                currentLargedPosition = center;
            }
    
        }
    
        @Override
        public void onScrollStateChanged(AbsListView arg0, int arg1) {
            Log.i("scroll","onScrollStateChanged");             
        }
    });
    
    void enlargeMiddleView(int oldPosition, int newPosition){       
    
        // get enlarged view and make it return default size
        TextView newTextView = (TextView)listView.getChildAt(oldPosition).findViewById(R.id.text);
        newTextView.setHeight(50);
    
        // get the current center view and make it bigger
        TextView oldTextView = (TextView)listView.getChildAt(newPosition).findViewById(R.id.text);
        oldTextView.setHeight(300);     
    }
    

提交回复
热议问题