- 浏览: 84021 次
- 性别:
- 来自: 成都
最新评论
-
284772894:
好文章,谢谢
android硬件传感器 -
康妮西:
求这个View的解释望博主联系,我的联系方式:kangnixi ...
让scrollview在滚动的过程中自动定位页的边边 -
muyu114:
你这个是啥意思啊,有什么效果没有
让scrollview在滚动的过程中自动定位页的边边
假如你有多个匹配list,在这些匹配list中存在这样的一些匹配条目
a 匹配 b;
a 匹配 c;
a 匹配 d;
e 匹配 f
d 匹配 g;
加入你要实现实现select all,但有想实现相似条目互斥功能,
互斥的意思是:在上述条目中有关a的三个条目之间匹配条目只能存在一个,也就是
如果选择了
a 匹配 b,
那么a 匹配 c;
a 匹配 d;就自动把check状态值为false,
那么可以参照如下方式实现:
merge_item.xml
merge_group.xml
merge_list.xml
List11.java
效果如图:
a 匹配 b;
a 匹配 c;
a 匹配 d;
e 匹配 f
d 匹配 g;
加入你要实现实现select all,但有想实现相似条目互斥功能,
互斥的意思是:在上述条目中有关a的三个条目之间匹配条目只能存在一个,也就是
如果选择了
a 匹配 b,
那么a 匹配 c;
a 匹配 d;就自动把check状态值为false,
那么可以参照如下方式实现:
merge_item.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dp"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:layout_alignParentLeft="true"> <RelativeLayout android:id="@+id/avatarLayout_1" android:layout_width="60dip" android:layout_height="60dip" android:background="@drawable/frame"> <ImageView android:id="@+id/avatar_1" android:layout_width="60dip" android:layout_height="60dip" android:layout_alignParentLeft="true" android:src="@drawable/default_avatar" /> <ImageView android:id="@+id/sns_type_icon_1" android:layout_width="25dip" android:layout_height="25dip" android:paddingRight="5dip" android:paddingLeft="3dip" android:layout_alignBottom="@id/avatar_1" android:layout_alignRight="@id/avatar_1" /> </RelativeLayout> <TextView android:layout_below="@+id/item" android:layout_toRightOf="@+id/avatarLayout_1" android:layout_centerVertical="true" android:paddingLeft="1dip" android:id="@+id/name_1" android:layout_width="60dip" android:layout_height="wrap_content" android:textSize="18dip" android:layout_weight="1" android:textColor="#ffffff" android:text="Contact1" /> </LinearLayout> <RadioButton android:id="@+id/link" android:layout_centerHorizontal="true" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" android:layout_alignParentRight="true"> <TextView android:layout_below="@+id/item" android:layout_centerVertical="true" android:paddingRight="1dip" android:id="@+id/name_2" android:layout_width="60dp" android:layout_height="wrap_content" android:textSize="18dip" android:layout_weight="1" android:textColor="#ffffff" android:text="Contact2" /> <RelativeLayout android:id="@+id/avatarLayout_2" android:layout_width="60dip" android:layout_height="60dip" android:background="@drawable/frame"> <ImageView android:id="@+id/avatar_2" android:layout_width="60dip" android:layout_height="60dip" android:layout_alignParentLeft="true" android:src="@drawable/default_avatar" /> <ImageView android:id="@+id/sns_type_icon_2" android:layout_width="25dip" android:layout_height="25dip" android:paddingRight="5dip" android:paddingLeft="3dip" android:layout_alignBottom="@id/avatar_2" android:layout_alignRight="@id/avatar_2" /> </RelativeLayout> </LinearLayout> </RelativeLayout>
merge_group.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/group" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout>
merge_list.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="60dp"> <LinearLayout android:id="@+id/merge_list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation = "vertical"> </LinearLayout> </ScrollView> <RelativeLayout android:id="@+id/merge_bottom_bar" android:layout_width="fill_parent" android:layout_height="60dp" android:background="@drawable/bar" android:gravity="center_vertical" android:orientation="horizontal" android:layout_alignParentBottom="true"> <CheckBox android:id="@+id/selectedAll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="All" android:textColorHighlight="#ff00ff00" android:layout_marginLeft="10dp" android:layout_alignParentLeft="true" android:layout_alignLeft="@+id/merge_bottom_bar" android:layout_alignParentBottom="true" /> <Button android:id="@+id/btn_ok" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:layout_toLeftOf="@+id/btn_cancel" android:text="Save" android:layout_alignParentBottom="true" /> <Button android:id="@+id/btn_cancel" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignRight="@+id/merge_bottom_bar" android:layout_marginRight="10dp" android:text="Cancel" android:layout_alignParentBottom="true" /> </RelativeLayout> </RelativeLayout> </LinearLayout>
List11.java
import aliusa.cn.R; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.CompoundButton.OnCheckedChangeListener; import java.util.ArrayList; /** * This example shows how to use choice mode on a list. This list is * in CHOICE_MODE_SINGLE mode, which means the items behave like * checkboxes. */ public class List11 extends Activity { /** The similar_group_list. */ private ArrayList<SimilarGroup> list_similarGroup = new ArrayList<SimilarGroup>(); /** The merge group list layout. */ private LinearLayout layoutSimilarGroupList; /** The Constant CODE_MERGE_SUBMIT. */ public static final int CODE_MERGE_SUBMIT = 1; /** * The Class SimilarItem. */ public class SimilarItem { /** The avatar_1. */ public ImageView avatar_1; /** The avatar_2. */ public ImageView avatar_2; /** The name_1. */ public TextView name_1; /** The name_2. */ public TextView name_2; /** The sns type icon_1. */ public ImageView snsTypeIcon_1; /** The sns type icon_2. */ public ImageView snsTypeIcon_2; /** The check box. */ public RadioButton checkBox; /** The at similar group list position. */ public int atSimilarGroupListPosition; /** * Checks if is check. * * @return true, if is check */ public boolean isCheck() { return checkBox.isChecked(); } /** * Instantiates a new similar item. * * @param row the row * @param contact1 the contact1 * @param contact2 the contact2 * @param context the context */ public SimilarItem(RelativeLayout row,String name,Context context) { this.avatar_1 = (ImageView) row.findViewById(R.id.avatar_1); this.name_1 = (TextView) row.findViewById(R.id.name_1); this.snsTypeIcon_1 = (ImageView) row.findViewById(R.id.sns_type_icon_1); this.checkBox = (RadioButton) row.findViewById(R.id.link); this.avatar_2 = (ImageView) row.findViewById(R.id.avatar_2); this.name_2 = (TextView) row.findViewById(R.id.name_2); this.snsTypeIcon_2 = (ImageView) row.findViewById(R.id.sns_type_icon_2); //avatar this.avatar_1.setBackgroundResource(R.drawable.default_avatar); this.avatar_2.setBackgroundResource(R.drawable.default_avatar); //name this.name_1.setText(name); this.name_2.setText(name+"_2"); } } /** * Adds the similar item. * * @param atSimilarGroupListPosition the at similar group list position * @param parrent the parrent * @param contact1 the contact1 * @param contact2 the contact2 * @param context the context * @return the similar item */ public SimilarItem addSimilarItem(int atSimilarGroupListPosition,LinearLayout parrent,final Context context) { LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final RelativeLayout row = (RelativeLayout)inflater.inflate(R.layout.merge_item,null); final SimilarItem item = new SimilarItem(row,"Si"+atSimilarGroupListPosition, context); item.atSimilarGroupListPosition = atSimilarGroupListPosition; parrent.addView(row); System.out.println("MergeList.addSimilarItem"); return item; } /** * The Class SimilarGroup. */ public class SimilarGroup{ /** The similar_item_ list. */ private ArrayList<SimilarItem> similar_item_List = new ArrayList<SimilarItem>(); /** * Instantiates a new similar group. */ public SimilarGroup() { } /** * Select first. * * @param isChecked the is checked */ public void selectFirst(boolean isChecked) { similar_item_List.get(0).checkBox.setChecked(isChecked); System.out.println("MergeList.selectFirst isChecked=" + isChecked); } /** * Gets the checked position. * * @return the checked position */ public int getCheckedPosition() { for (int i = 0; i < similar_item_List.size(); i++) { if (similar_item_List.get(i).isCheck()) { return i; } } return -1; } } /** * Adds the similar group. * * @param parrent the parrent * @param similarListOfLocal the similar list of local * @param sns the sns * @param context the context * @return the similar group */ public SimilarGroup addSimilarGroup(LinearLayout parrent, Context context) { final SimilarGroup similarGroup = new SimilarGroup(); final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final LinearLayout group = (LinearLayout) inflater.inflate(R.layout.merge_group,null); final int lengthOfSimiarGroupList = list_similarGroup.size(); final LinearLayout groupLinearLayout = (LinearLayout) group.findViewById(R.id.group); for (int i = 0; i < 3; i++) { final SimilarItem similarItem = addSimilarItem(lengthOfSimiarGroupList, groupLinearLayout, context); similarItem.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { for (int i = 0; i < similarGroup.similar_item_List.size(); i++) { final SimilarItem similarItemOfGroup = similarGroup.similar_item_List.get(i); if (similarItem.checkBox != similarItemOfGroup.checkBox) { similarItemOfGroup.checkBox.setChecked(false); } } } } }); similarGroup.similar_item_List.add(i, similarItem); } parrent.addView(group); System.out.println("MergeList.addSimilarGroup"); return similarGroup; } /** * Select all. * * @param isChecked the is checked */ public void selectAll(boolean isChecked){ for (int i = 0; i < list_similarGroup.size(); i++) { list_similarGroup.get(i).selectFirst(isChecked); } } /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.merge_list); layoutSimilarGroupList = (LinearLayout) this.findViewById(R.id.merge_list); //init similar list list_similarGroup.clear(); for(int i = 0; i < 5; i++) { list_similarGroup.add(addSimilarGroup(layoutSimilarGroupList,this)); } //setBtnEvent(); final CheckBox selectAll = (CheckBox) this.findViewById(R.id.selectedAll); selectAll.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { selectAll(isChecked); } }); selectAll.setChecked(true); final Button cancel = (Button) findViewById(R.id.btn_cancel); cancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); final Button ok = (Button) findViewById(R.id.btn_ok); ok.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); super.onCreate(savedInstanceState); } }
效果如图:
发表评论
-
Android_SDK_NDK_JNI
2014-09-10 12:26 721Android SDK、NDK、JNI的简 ... -
如何检查apk是否签名
2012-02-22 16:46 2486Use this command : (Jarsigner i ... -
切割bitmap
2011-11-15 16:09 973Bitmap resource = BitmapFactory ... -
TextView控件属性列表
2011-10-08 15:58 1188纯属转载: http://www.cnbl ... -
元数据Meta Data
2011-09-30 16:30 1141<meta-data andr ... -
Android UI Operation in Thread
2011-09-21 17:16 1140Android UI Operation in Thread ... -
系统自带样式Android:theme
2011-06-23 15:58 2257Android应用开发——系统自带样式Android:them ... -
EditText自动获取焦点并弹出输入法的问题
2011-06-16 16:25 50431.每次启动新的Activity的时候,输入法总是弹出来,太烦 ... -
Service Broadcast BroadcastReceiver AlarmManager,Notification利用service定时/周期性发送广播
2011-05-31 16:35 38731.如题 主要实现 1.启动service,关 ... -
android硬件传感器
2011-05-30 16:07 13375纯属转载:http://dev.10086 ... -
权限permission
2011-05-27 18:03 1278纯属于转载: http://blog.csdn.net/ ... -
读写系统设置——日期与时间使用网络提供的值(时间与网络同步)
2011-05-27 17:19 2533//读_1.带默认参数的 Settings.Syste ... -
读写系统设置
2011-05-27 17:13 1808Android的很多设置想关的东西都存储在数据库中 andro ... -
Display_获取屏幕宽高
2011-05-06 12:19 975public static void intScreen(A ... -
selectAll___CheckBox in ListView
2011-05-03 17:32 14541.如果你有一个ListView,listView的 adap ... -
Layout___模块重用之include布局整合
2011-04-06 14:04 1358在Android的开发中,我们知道布局文件可以让我们很 ... -
value-string
2011-04-06 13:36 2090我们知道在android的value文件夹下,string.x ... -
利用PorterDuff.Mode做橡皮擦效果
2011-04-01 18:03 10760http://stackoverflow.com/questi ... -
UI___tab view 的实现
2011-03-24 15:19 1984一.通过xml文件实现 1.创建一个tab iew,所需的x ... -
常用的html特殊符号转义符
2011-03-24 14:40 2221HTML特殊转义字符列表,最常用的字符实体 Character ...
相关推荐
手动实现仿京东发现页面效果,使用布局嵌套完成,包括ScrollView+TabLayout+ViewPager+RecyclerView,最后有遗留问题需要处理。详情见博客https://blog.csdn.net/hq942845204/article/details/88844272
unity3d_5_3_6 UGUI ScrollView 重复利用 优化资源item 学习链接:http://blog.csdn.net/mutou_222/article/details/50455729
Super ScrollView for UGUI listview集合,非常不错的控件
`RadioButton`通常与`RadioGroup`一起使用,`RadioGroup`会管理其包含的所有`RadioButton`,确保同一时间内只有一个按钮被选中。通过监听`RadioGroup`的`onCheckedChangeListener`,开发者可以获取用户的选择并执行...
要实现ListView的效果,我们需要创建一个包含多个相同或相似布局的LinearLayout,每个布局代表ListView的一个条目。以下是一些关键步骤: 1. **创建条目布局**: 在res/layout目录下创建一个新的XML布局文件,例如`...
亲测成功,可以直接嵌套项目中 ScrollView嵌套TabLayout+ViewPager解决滑动冲突,已进行重点标注 ViewPager会根据frament的界面高度进行展示,进行framnet的高度测量 嵌套冲突已全部解决
有时候项目在ListView中需要显示EditText,CheckBox等控件,这样就会出现一个问题,滑动时或失去焦点时编辑信息混乱。...这里提供了令一种解决方法,ScrollView,+LinearLayout模拟ListView完美解决。
Scrollview+ViewPager(自动滚动) 一个界面类,2个重写View类,一个实体类,一个适配器类 实现了Scrollview下桥套ViewPager自动滚动,如果需要下拉刷新,自己可以替换成其它的开源控件
在Android开发中,"仿drippler详情页效果"通常是指实现类似Drippler应用的滚动体验,这种体验包括ScrollView的阻尼效果和布局的浮动行为。这些特性为用户提供了更加自然、流畅的交互体验。下面我们将详细探讨这两个...
【标题】:“网易布局viewpager+fragment+scrollview+recycleview”揭示了这个项目是关于如何在Android应用中整合并高效使用这些组件的实例。ViewPager通常用于实现页面滑动效果,Fragment则允许在单个Activity中...
《Unity 3D中的Super ScrollView插件深度解析与应用实践》 Unity 3D作为一款强大的游戏开发引擎,其用户界面(UI)系统在不断进化,UGUI的出现极大地提升了UI设计的灵活性和效率。然而,在开发过程中,尤其是在构建...
安卓Android事件分发处理 scrollview套scrollview+scrollview.其中viewpager下套listview 带悬浮框效果 viewpager可以左右切换。整体可上下滑动,当滑动到悬浮框的位置,嵌套的listview 可以滑到,悬浮停留在顶部。...
在Android开发中,`ScrollView`、`ViewPager`和`ListView`或`RecyclerView`是常见的UI组件,它们分别用于实现不同的滚动视图效果。本篇将深入探讨如何将这些组件组合使用,尤其是涉及到“加载更多”功能的实现。 ...
标题"scrollview+viewPager+listview"揭示了这样一个需求:在一个布局中同时使用这三个组件。下面我们将详细探讨这些组件以及如何在实际项目中进行整合。 `ScrollView`是Android中的一个容器,它允许用户滚动其内部...
《Super ScrollView for UGUI:深度解析与应用指南》 Unity引擎在开发2D和3D游戏及交互式应用时,提供了强大的图形用户界面(UGUI)系统,它为开发者提供了丰富的UI元素和交互方式。然而,在处理大量滚动数据或者...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...
要实现"ScrollView+TableView滑动分层效果",我们首先要将TableView作为ScrollView的子视图进行添加。这可以通过代码或者Interface Builder完成。然后,我们需要监听ScrollView的滚动事件,当用户上拉时,隐藏或缩小...
1.存ReactNative 代码文件,该代码是ES6+语法,建议先建一个ReactNative项目,将该文件拷贝进去,查看效果。 2.文件对应博客地址: https://blog.csdn.net/li11_/article/details/81875387
本项目"scrollview+ textfield demo"是一个示例,展示了如何在ScrollView中集成TextField和TextView,使得在输入文本时,ScrollView能够智能地调整其内容,避免键盘遮挡输入区域,从而提供良好的用户体验。...