android类似微信朋友圈评论效果,listview定位,item总在输入法上面的位置
来源:互联网 发布:linux mysql user表 编辑:程序博客网 时间:2024/04/28 04:34
因为公司需要,才去研究这个
最终效果:
1、点击任何一个item的评论按钮,出现评论框,弹出输入法,这个item恰好在输入法上边
实现思路:
主要是设置listview中item的位置,其实 ,设置它的位置,主要有两个访求:
listView.setSelection(int position) 设置某个item滚动到当前的顶部
listView.setSelectionFromTop(int position,int top) 设置某个item滚动到距离当前页面,但不是顶部,而是距离顶部的某个位置,距离为top参数
还有一个listView.getBottom,返回这个listview的底部的x坐标,其实 ,这样就可以了:
viewHeight为listview中每个item的高度,
listview.getBottom为这个listview的高度,
position为当前点击的item在listview中的位置,
这样的话,捕获点击事件,在点击事件里设置listview.setSelectionFromTop(position,listview.getBottom-viewheight),就可以让这个item移到屏幕底部。
其实 ,在实际使用过程中,因为每次使用过程中,都会弹出输入法,所以,之前listview.getBottom还是没有输入法弹出时的高度,所以造成位置不正确。我的解决办法是,重写自定义listview继承ListVIew,然后里面有个onSizeChanged方法 ,会在ListView尺寸变化的时候调用,我在这里添加了一个回调,然后,在回调里,再次获取listview的尺寸的就可以了。
自定义的listVIew如下:
package com.carlos.mylistview;import android.content.Context;import android.util.AttributeSet;import android.widget.ListView;/** * Created by Administrator on 2015/12/30. */public class MyListView extends ListView { private OnSizeChangedListener onSizeChangedListener; public void setOnSizeChangedListener(OnSizeChangedListener onSizeChangedListener) { this.onSizeChangedListener = onSizeChangedListener; } interface OnSizeChangedListener { public void onSizeChanged(); } public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); onSizeChangedListener.onSizeChanged(); }}
然后是主activity:
package com.carlos.mylistview;import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements MyListView.OnSizeChangedListener, View.OnClickListener { private ListView listView; private EditText editText; /** * item的高度 */ private int viewHeight; /** * 当前点击的位置 */ private int position; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); listView = (ListView) findViewById(R.id.listView); //因为是自定义的ListView,所以在这里设置回调 ((MyListView) listView).setOnSizeChangedListener(this); listView.setAdapter(new MainAdapter(this, this)); } /** * ListView尺寸改变后的回调 */ @Override public void onSizeChanged() { listView.setSelectionFromTop(position, listView.getBottom() - viewHeight); } @Override public void onClick(View v) { //获取当前点击的位置 position = (int) v.getTag(); Toast.makeText(this, "点击了" + position, Toast.LENGTH_LONG).show(); //获取点击的那个Item的高度 viewHeight = ((View) v.getParent()).getHeight(); editText.requestFocus(); InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0); }}如下图,这是实现的最终效果:
如果没有看明白,我已经把项目分享到了github上,大家可以去下载源码:
https://github.com/ws123/MyListView
大家可以下载看一下,并不难实现。
- android类似微信朋友圈评论效果,listview定位,item总在输入法上面的位置
- TextView实现点击部分文字跳转,实现微信朋友圈评论Item的显示效果
- 实现类似微信朋友圈或者QQ空间,评论回复,九宫格布局。处理键盘弹出后定位到当前点击的被评论人处。另:滑动时候FPS在57-60之间,纵享丝滑
- android 滚动条下拉反弹的效果(类似微信朋友圈)
- 类似微信5.x朋友圈的弹出框评论功能
- 调戏微信朋友圈定位算法,巧用图片位置信息更改朋友圈定位信息
- 类似朋友圈,评论View
- Android ListView 滑动到指定item 定位 指定位置
- Android ListView实现类似朋友圈的复杂布局
- 微信朋友圈评论功能的实现步骤
- Android 朋友圈 输入框评论效果
- android仿微信朋友圈点击评论效果
- Android 朋友圈 输入框评论效果
- 类似微信listview中item的滑动显示更多操作
- ListView 实现IM 类似QQ 微信 item置顶最简单的方法
- 【请教】微信朋友圈点赞,评论功能是怎么实现的呢?在做类似效果,有哪位知道的还请指教?
- 类似微信朋友圈动态的数字红点
- 如何实现类似微信的朋友圈界面?
- 《python进行自然语言处理》练习处理HTML内容的时候出现ImportError: No module named BeautifulSoup错误
- 利用ReentrantLock的Condition实现线程之间的通信
- linux使用xinetd自定义服务
- 多线程,异步 boost::future::then, std::promise, std::async, std::future etc.
- nGrinder学习笔记 — post请求
- android类似微信朋友圈评论效果,listview定位,item总在输入法上面的位置
- java Session与Coockie的使用
- Codeforces Beta Round #4 (Div. 2 Only) A. Watermelon
- Axure RP7.0制作网站后台管理系统模板(一)
- Zoho Reports让数字营销更容易
- 如何接收到home键的点击事件
- jQuery事件命名空间
- ios 程序判断是否第一次启动
- 自加顶部标题栏