【问题标题】:Slide down effect on expanding listview item visibility issues while scrollng滚动时扩展列表视图项目可见性问题的向下滑动效果
【发布时间】:2013-10-06 00:52:00
【问题描述】:

滚动时列表视图项目混乱。我正在尝试在我的列表视图中实现this 想法并面临以下问题

在 Onitemclick() 下,最后一个可见视图关闭并显示新视图,它的工作但当第一个项目可见并且滚动列表视图后,我看到其他项目也可见,无需用户点击。 任何关于如何在滚动时保持唯一一项可见的建议。

活动:

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
View last_dropdownBarview=null;

 ViewHolder holder = (ViewHolder) arg1.getTag();
    final View dropDown = holder.dropdownBarview;

if(last_dropdownBarview!=null)
{
    last_dropdownBarview.setVisibility(View.GONE);
}

ExpandCollapseAnimation.setHeightForWrapContent(MainActivity.this, dropDown);
ExpandCollapseAnimation expandAni = new ExpandCollapseAnimation(dropDown, DROP_DOWN_TIME);
dropDown.startAnimation(expandAni);

last_dropdownBarview= dropDown;

}

适配器类:

static class ViewHolder {
    .
    .
    protected View dropdownBarview;

}

public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder = null;
    if (convertView == null) {

        LayoutInflater inflator = context.getLayoutInflater();
        convertView = inflator.inflate(R.layout.row, null);
        viewHolder = new ViewHolder();

        viewHolder.dropdownBarview= convertView.findViewById(R.id.toolbar);
        convertView.setTag(viewHolder);
        convertView.setTag(R.id.dropdownbar,viewHolder.dropdownBarview);            
    }
    else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.dropdownBarview.setTag(position);
}

【问题讨论】:

    标签: android listview android-listview


    【解决方案1】:

    曾经在这里看到

       DisplayMetrics metrics = new DisplayMetrics();
       getWindowManager().getDefaultDisplay().getMetrics(metrics);
       int width = metrics.widthPixels; 
    
     mExpandableList = (ExpandableListView)findViewById(R.id.expandable_list);
     mExpandableList.setIndicatorBounds(width - GetPixelFromDips(50), width - GetPixelFromDips(10));  
    
        public int GetPixelFromDips(float pixels) {
         // Get the screen's density scale 
          final float scale = getResources().getDisplayMetrics().density;
         // Convert the dps to pixels, based on density scale
       return (int) (pixels * scale + 0.5f);
     }
    

    see this one working fine

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多