目前创新互联公司已为上1000家的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、相城网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
图形化界面来查看数据库,使用Sqliteman
>sudo apt-get install sqliteman
>1.Intent it = getIntent();
>2.Intent it = new Intent();
说说第一种,假设注册了个单击跳转的事件,第一次点击是有反应的,现在退出整个应用程序,再次启动,此时的单击事件都失效,其他的监听事件都没问题,就属单击事件.
Java代码
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
String title = ((TextView) info.targetView.findViewById(R.id.groupName)).getText().toString();
menu.setHeaderTitle(title);
menu.add(0, MENU_GROUP_ADD, 0, "添加分组");
menu.add(0, MENU_GROUP_DELETE, 0, "删除分组");
menu.add(0, MENU_GROUP_MODIFY, 0, "重命名");
menu.add(0, MENU_GROUP_ADDCONTACT, 0, "添加联系人");
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
String title = ((TextView) info.targetView.findViewById(R.id.chats_view_name)).getText().toString();
menu.setHeaderTitle(title);menu.add(0, MENU_CONTACTS_DELETE, 0, "删除联系人");
menu.add(0, MENU_CONTACTS_MODIFY, 0, "编辑联系人");
menu.add(0, MENU_CONTACTS_MOVE, 0, "移动联系人到...");}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListContextMenuInfo menuInfo = (ExpandableListContextMenuInfo) item.getMenuInfo();
int type = ExpandableListView.getPackedPositionType(menuInfo.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
String groupName = ((TextView) menuInfo.targetView.findViewById(R.id.groupName)).getText().toString();
Log.i(TAG, groupName);
switch (item.getItemId()) {
case MENU_GROUP_ADD:break;
case MENU_GROUP_DELETE:break;
case MENU_GROUP_MODIFY:break;
case MENU_GROUP_ADDCONTACT:break;
}
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
String childName = ((TextView) menuInfo.targetView.findViewById(R.id.chats_view_name)).getText().toString();
Log.i(TAG, childName);
switch (item.getItemId()) {
case MENU_CONTACTS_DELETE:break;
case MENU_CONTACTS_MODIFY:break;
case MENU_CONTACTS_MOVE:break;
}
}
return true;
}
如果需要给group或者child 加上个长按事件
这样写了,没反应,需要将实列注册给监听器
Java代码
ExpandableListView mElv = (ExpandableListView) findViewById(android.R.id.list);registerForContextMenu(mElv);
另外需要提到一点的是,我在项目里注册了长按事件,同时group下的child也有个onClick()事件,这时候,onClick()事件无效
需要给child增加单击事件
Java代码
mElv.setOnChildClickListener(mChildClickListener);// 注册group下的item的点击事件
OnChildClickListener mChildClickListener = new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(Main.this, ChatActivity.class);
startActivity(intent);
return false;
}
};
> 今天发现 想要将列表控件中间的分割符去掉,可以通过android:divider="@null"来设置.
别走开 ,下页继续深入分析
#p#
Java代码
EditText inputField = new EditText(this);
Editable eText = inputField.getText();
int position = eText.length();
Selection.setSelection(eText, position);
Java代码
android:layout_width="fill_parent" android:layout_height="50dip"
android:orientation="horizontal" android:visibility="gone">
android:layout_height="wrap_content" android:layout_weight="1.0"
android:layout_gravity="center_vertical">
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/chat_history_button"
android:layout_centerInParent="true" />
android:layout_height="wrap_content" android:layout_weight="1.0"
android:layout_gravity="center_vertical">
android:layout_height="wrap_content" android:background="@drawable/widget_qq"
android:layout_centerInParent="true" />
android:layout_height="wrap_content" android:layout_weight="1.0"
android:layout_gravity="center_vertical">
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/back_btn"
android:layout_centerInParent="true" />
Java代码
- android:focusableInTouchMode="true" android:layout_height="0px"
- android:layout_width="0px">
Java代码
- /**
- * 控制软键盘的显示与隐藏
- */
- private void opSoftInput(View view, boolean hasFocus){
- if(hasFocus){
- putMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(view, 0);
- } else {
- putMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
- }
- }
呵呵,中间走了点弯路,开始是将EditText中的内容拿去解析,还用了正则去匹配,结果失败,
SpannableString类的setSpan(Object what, int start, int end, int flags)
我采用map保存了表情,
看下当时写的重写的EditText的setText()方法
Java代码
- @Override
- public void setText(CharSequence text, BufferType type) {
- // TODO Auto-generated method stub
- initFaceMap();
- // 需要处理的文本
- SpannableString spannable = new SpannableString(text.toString());
- if (text != null && faceMap != null) {
- // 对表情符以img标记进行修饰,改用drawable显示出来
- Set
keys = faceMap.keySet(); - for (String key : keys) {
- if (text.toString().contains(key)) {
- Drawable drawable = getResources().getDrawable(faceMap.get(key));
- drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
- //要让图片替代指定的文字就要用ImageSpan
- ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
- int start = text.toString().indexOf(key);
- spannable.setSpan(span, start, start + key.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
- }
- }
- }
- super.setText(spannable, type);
- }
这样写,如果有输入相同的表情,则只有第一个显示正常,后续的都是字符,因为我只遍历了一遍map,而且是替换了一遍.
下面是简单方法(需要在布局文件里给每个表情按钮添加一个tag属性,展示的是表情,实质内容还是tag的文本,方便接收方的解析)
Java代码
- /** 聊天表情图片监听器 */
- private OnClickListener faceImageButtonListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- ImageButton imageButton = (ImageButton) v;
- String emotionTag = imageButton.getTag().toString();
- int cursor = content.getSelectionEnd();
- content.getText().insert(cursor, emotionTag);
- SpannableString spannable = new SpannableString(content.getText());
- Drawable draw = imageButton.getDrawable();
- ImageSpan span = new ImageSpan(draw, ImageSpan.ALIGN_BASELINE);
- // 下面flags参数换成Spannable.SPAN_INCLUSIVE_EXCLUSIVE,会导致添加了表情后,无法删除表情,也无法输入字符
- spannable.setSpan(span, cursor, cursor + emotionTag.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- content.setText(spannable);
- Editable eText = content.getText();
- Selection.setSelection(eText, content.getText().length());// 控制光标显示在字符最后
- }
- };
最后贴上效果图
分享文章:Android基本概念小整理(二)
分享链接:http://www.csdahua.cn/qtweb/news21/394721.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网