伙伴云如何改成百度模糊搜索索

伙伴云表格权限设置功能操作视频_腾讯视频
三倍流畅播放
1080P蓝光画质
新剧提前看
1080P蓝光画质
纯净式无框播放器
三倍流畅播放
扫一扫 手机继续看
下载需先安装客户端
{clientText}
客户端特权:
3倍流畅播放
当前播放至 {time}
扫一扫 手机继续看
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要如何设置常用的筛选? - 使用手册 - 伙伴办公(原“伙伴云表格”) - 领先的移动办公与数据管理平台
常用的筛选条件可以保存起来,方便下次筛选相同类型数据时直接使用。
我的筛选和公共筛选
这两类筛选,均为保存的常用筛选,只是使用权限不同。
我的筛选:只有自己可以看到的常用筛选,任何人都可以自行添加。
公共筛选:所有人都可以看到的常用筛选,只有工作区的管理员才可以添加。
如何添加一个常用筛选
1、进入表格后,从左侧的“自定义筛选”进入筛选器。工作区管理员还可以从“公共筛选”右侧的“+”加号进入。
2、设置好筛选条件后,点击筛选器顶部的“保存筛选条件”。
3、在弹出层中填写名称,点击保存即可。如为普通成员,将直接保存到“我的筛选”。如为工作区管理员,则会看到“类型”选项,可选保存为“公共筛选”,还是“我的筛选”。
如何修改已保存的常用筛选
鼠标移到常用筛选后,点击右侧出现的“下拉箭头”,即可进行改名、修改筛选条件、删除的操作。
如为工作区管理员,则会看到“修改为我的筛选”或“修改为公共筛选”的操作,此功能可将常用筛选在“我的筛选”和“公共筛选”之间互相移动。仿伙伴云表格的筛选控件 - 简书
仿伙伴云表格的筛选控件
最近在做一个ERP的项目,产品要求做一个类似京东,淘宝,伙伴云表格的筛选控件,如下图所示:
这个页面其实一个主页面的Activity,右滑弹出一个抽屉DrawerLayout,抽屉其实是一个fragment,我们主要的布局就在fragment里面。而这个筛选控件其中的一个其实是下拉菜单。当然原生的spinner太丑而且不符合要求,所以我用一个LinearLayout包含一个TextView(drawableRight下拉图标),加一个listview来构造。
2.行动代码
思路有了,接下来就是代码行动了,首先我们封装这个控件。
public class MySpinnerView extends LinearLayout implements MySpinnerAdapter.RadioButtonClick {
//用于下拉图标的动画
private static final int MAX_LEVEL = 10000;
//用于状态保存
private static final String INSTANCE_STATE = "instance_state";
private static final String SELECTED_INDEX = "selected_index";
private static final String IS_POPUP_SHOWING = "is_popup_showing";
private int selectedI//选中的位置
private D//下拉图标
private ListView listV
private MySpinnerA//用于listview的adapter
private AdapterView.OnItemClickListener onItemClickL
private AdapterView.OnItemSelectedListener onItemSelectedL
private boolean isArrowHide, isS//是否显示
private int textC
private int backgroundS//选中颜色
private int datasId;
private TextView titleV//title
private String titleT
private int defaultP//默认padding
private List&FilterDataItem& mFilterDataI//筛选的数据源
private String startDate, endD
private int lastPos = -1;//保存最近一次选中的位置
public MySpinnerView(Context context) {
super(context);
getAttrs(context, null);
init(context, null);
public MySpinnerView(Context context, AttributeSet attrs) {
super(context, attrs);
getAttrs(context, attrs);
init(context, attrs);
public MySpinnerView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
getAttrs(context, attrs);
init(context, attrs);
public Parcelable onSaveInstanceState() {
Bundle bundle = new Bundle();
bundle.putParcelable(INSTANCE_STATE, super.onSaveInstanceState());
bundle.putInt(SELECTED_INDEX, selectedIndex);
bundle.putBoolean(IS_POPUP_SHOWING, isShowing);
dismissDropDown();
public void onRestoreInstanceState(Parcelable savedState) {
if (savedState instanceof Bundle) {
Bundle bundle = (Bundle) savedS
selectedIndex = bundle.getInt(SELECTED_INDEX);
if (adapter != null) {
setTitle(selectedIndex);
// adapter.notifyItemSelected(selectedIndex);
if (bundle.getBoolean(IS_POPUP_SHOWING)) {
if (isShowing) {
post(new Runnable() {
public void run() {
showDropDown();
savedState = bundle.getParcelable(INSTANCE_STATE);
super.onRestoreInstanceState(savedState);
* 获取相关属性attr
* @param context
* @param attrs
private void getAttrs(Context context, AttributeSet attrs) {
// TODO Auto-generated constructor stub
// 通过这个方法,将你在attrs.xml中定义的declare=styleable
// 的所有属性的值存储到TypedArray中
TypedArray ta = context.obtainStyledAttributes(attrs,
R.styleable.MySpinnerView);
// 从TypedArray中取出对应的值来为要设置的属性赋值
titleText = ta.getString(R.styleable.MySpinnerView_msv_title);
datasId = ta.getResourceId(R.styleable.MySpinnerView_msv_array, 0);
defaultPadding = getResources().getDimensionPixelSize(R.dimen.one_and_a_half_grid_unit);
setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
setPadding(getResources().getDimensionPixelSize(R.dimen.three_grid_unit), defaultPadding, defaultPadding,
defaultPadding);
setClickable(true);
backgroundSelector = ta.getResourceId(R.styleable.MySpinnerView_msv_backgroundSelector,
R.drawable.spinner_selector);
textColor = ta.getColor(R.styleable.MySpinnerView_msv_textTint, -1);
isShowing = ta.getBoolean(R.styleable.MySpinnerView_msv_isShow, false);
isArrowHide = ta.getBoolean(R.styleable.MySpinnerView_msv_hideArrow, false);
if (!isArrowHide) {
//不隐藏则显示图标
Drawable basicDrawable = ContextCompat.getDrawable(context, R.drawable.spinner_arrow);
int resId = ta.getColor(R.styleable.MySpinnerView_msv_arrowTint, -1);
if (basicDrawable != null) {
drawable = DrawableCompat.wrap(basicDrawable);
if (resId != -1) {
DrawableCompat.setTint(drawable, resId);
ta.recycle();
private void init(final Context context, AttributeSet attrs) {
setOrientation(VERTICAL);
titleView = new TextView(context);
titleView.setText(titleText);
titleView.setPadding(defaultPadding, defaultPadding, defaultPadding, defaultPadding);
if (!isArrowHide) {
titleView.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
listView = new ListViewInSrcollView(context);
listView.setId(getId());
listView.setDivider(null);
listView.setItemsCanFocus(true);
//隐藏scrollbars
listView.setVerticalScrollBarEnabled(false);
listView.setHorizontalScrollBarEnabled(false);
listView.setBackgroundResource(backgroundSelector);
//数据源,这里测试用的是assets中的json,开发者可自行构造bean和数据源
if (datasId != 0) {
final String[] temp = getResources().getStringArray(datasId);
mFilterDataItems = new ArrayList&&();
for (String aTemp : temp) {
mFilterDataItems.add(new FilterDataItem(0, aTemp, false));
adapter = new MySpinnerAdapter(mFilterDataItems, this);
setAdapterInternal(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view, int position, long id) {
spinnerClick(position);
addView(titleView);
addView(listView);
if (isShowing) {
listView.setVisibility(View.VISIBLE);
listView.setVisibility(View.GONE);
* 获取当前选中的位置
public int getSelectedIndex() {
return selectedI
* 设置当前选中位置
* @param position 位置
public void setSelectedIndex(int position) {
if (adapter != null) {
if (position &= 0 && position &= adapter.getCount()) {
//adapter.notifyItemSelected(position);
selectedIndex =
setTitle(position);
throw new IllegalArgumentException("Position must be lower than adapter count!");
public void addOnItemClickListener(@NonNull AdapterView.OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickL
public void setOnItemSelectedListener(@NonNull AdapterView.OnItemSelectedListener onItemSelectedListener) {
this.onItemSelectedListener = onItemSelectedL
* 设置adapter
* @param adapter
private void setAdapterInternal(MySpinnerAdapter adapter) {
// If the adapter needs to be settled again, ensure to reset the selected index as well
//selectedIndex = 0;
listView.setAdapter(adapter);
//setTitle(selectedIndex);
* 设置adapter
* @param filterDataItems 数据源
public void setAdapter(List&FilterDataItem& filterDataItems) {
this.mFilterDataItems = filterDataI
this.adapter = new MySpinnerAdapter(filterDataItems, this);
setAdapterInternal(adapter);
public boolean onTouchEvent(@NonNull MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if (!isShowing) {
showDropDown();
dismissDropDown();
return super.onTouchEvent(event);
* 点击动画效果
* @param shouldRotateUp
private void animateArrow(boolean shouldRotateUp) {
int start = shouldRotateUp ? 0 : MAX_LEVEL;
int end = shouldRotateUp ? MAX_LEVEL : 0;
ObjectAnimator animator = ObjectAnimator.ofInt(drawable, "level", start, end);
animator.setInterpolator(new LinearOutSlowInInterpolator());
animator.start();
public void dismissDropDown() {
if (!isArrowHide) {
animateArrow(false);
listView.setVisibility(View.GONE);
isShowing =
public void showDropDown() {
if (!isArrowHide) {
animateArrow(true);
listView.setVisibility(View.VISIBLE);
isShowing =
public void setTintColor(@ColorRes int resId) {
if (drawable != null && !isArrowHide) {
DrawableCompat.setTint(drawable, ContextCompat.getColor(getContext(), resId));
public void setTitle(int position) {
String text =
if (adapter.getItem(position) instanceof String) {
text = titleText + "&font color=\"red\"& " +
"(" + adapter.getItem(position).toString() + ")" + "&/font&";
if (adapter.getItem(position) instanceof FilterDataItem) {
FilterDataItem bean = (FilterDataItem) adapter.getItem(position);
text = titleText + "&font color=\"#3b597b\"& " +
"(" + bean.getName() + ")" + "&/font&";
titleView.setText(Html.fromHtml(text));
* 获取选中的数据源
public FilterDataItem getSelectedData() {
if (selectedIndex &= 8) {
FilterDataItem item = new FilterDataItem();
item.setName(startDate + "|" + endDate);
item.setId(-5);
if (TextUtils.isEmpty(startDate)
|| TextUtils.isEmpty(endDate)) {
item.setChecked(false);
item.setChecked(true);
return mFilterDataItems.get(selectedIndex);
public void click(int position) {
spinnerClick(position);
* 点击方法
* @param position
private void spinnerClick(int position) {
final FilterDataItem bean = mFilterDataItems.get(position);
System.out.println("点击的位置" + position);
if (!bean.isChecked()) {
//更改点击状态
bean.setChecked(true);
//把最近的已经设为true的变为false
if (lastPos != -1) {
FilterDataItem item = mFilterDataItems.get(lastPos);
item.setChecked(false);
selectedIndex =
final int tempPos =
if (bean.getName().contains("时间")) {
Calendar c = Calendar.getInstance();
// 直接创建一个DatePickerDialog对话框实例,并将它显示出来
new DatePickerDialog(getContext(),
// 绑定监听器
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
if (bean.getName().contains("开始时间")) {
startDate = year + "." + (monthOfYear + 1)
+ "." + dayOfM
bean.setName("开始时间
" + startDate);
endDate = year + "." + (monthOfYear + 1)
+ "." + dayOfM
bean.setName("结束时间
" + endDate);
adapter.notifyDataSetChanged();
setTitle(tempPos);
// 设置初始日期
, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c
.get(Calendar.DAY_OF_MONTH)).show();
postDelayed(new Runnable() {
public void run() {
dismissDropDown();
adapter.notifyDataSetChanged();
setTitle(position);
然后就是在fragment的布局文件中引入它fragment_filter.xml
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
&RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"&
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/filter"/&
android:id="@+id/tvEnsure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:background="@drawable/corner_btn"
android:padding="5dp"
android:text="@string/ensure"
android:textColor="@color/white"/&
&/RelativeLayout&
&ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"&
&LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"&
&com.dy.filter.MySpinnerView
android:id="@+id/groupView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:msv_backgroundSelector="@color/radio_bg"
app:msv_isShow="false"
app:msv_title="对象"/&
&com.dy.filter.MySpinnerView
android:id="@+id/exponentView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:msv_backgroundSelector="@color/radio_bg"
app:msv_isShow="false"
app:msv_title="指数"/&
&com.dy.filter.MySpinnerView
android:id="@+id/timeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:msv_backgroundSelector="@color/radio_bg"
app:msv_isShow="false"
app:msv_title="查询时间"/&
&/LinearLayout&
&/ScrollView&
&/LinearLayout&
最后上activity的布局文件,就是一个drawerlayout
&?xml version="1.0" encoding="utf-8"?&
&android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
&LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"&
&RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/blue"&
android:id="@+id/tvBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:text="返回"
android:textColor="@color/white"/&
android:id="@+id/tvFilterExponent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textColor="@color/white"
tools:text="订单金额"/&
android:id="@+id/tvFilter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_margin="10dp"
android:drawableLeft="@drawable/ic_action_select"
android:gravity="center"
android:text="筛选"
android:textColor="@color/white"/&
&/RelativeLayout&
&/LinearLayout&
&!-- 抽屉内容 --&
&FrameLayout
android:id="@+id/drawer_content"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:clickable="true"
&/android.support.v4.widget.DrawerLayout&
最后上demo地址,
致力于Android开发的程序猿
个人blog:https://www.dyenter.top
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新ViewPager图表(Chart)菜单(Menu)浮动菜单对话框空白页滑动删除手势操作RecyclerViewCardColorDrawableSpinner...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
Android UI相关开源项目库汇总OpenDigg 抽屉菜单MaterialDrawer ★7337 - 安卓抽屉效果实现方案Side-Menu.Android ★3865 - 创意边侧菜单FlowingDrawer ★1744 - 向右滑动流动抽屉效果SlidingR...
抽屉菜单 MaterialDrawer ★7337 - 安卓抽屉效果实现方案 Side-Menu.Android ★3865 - 创意边侧菜单 FlowingDrawer ★1744 - 向右滑动流动抽屉效果 SlidingRootNav ★1338 - 仿DrawerLa...
1、奥地利邮政提供购买数字货币服务 奥地利邮政服务供应商Osterreichische Post已证实正在与维也纳的数字货币交易所Bitpanda合作,为比特币、以太币、达世币和莱特币提供离线兑换交易。 Bitpanda在7月11日率先宣布将推出该服务,Osterreich...
花卷儿说好久没约要不要去看场话剧,我说好像真的好久没看话剧和电影了,以前觉得一个人去看感觉好高冷,现在忽然觉得好sb的feeling。 花卷儿说没事儿,我甩了男票一起去看林奕华的梁祝吧。我说好。 这场耗时三个半小时的话剧是我近年看的最长的一场。古典题材,流行音乐,现代生活,...
2017亚洲国际动力传动与控制技术展览会(PTC ASIA)于10月31日在上海新国际博览中心隆重开幕!本届展会为期4天,是动力传动行业亚洲第一、世界第二的国际性专业展会,像磁铁一样吸引并汇聚了众多知名企业以及来自多达70多个国家的80000多名专业观众。
此篇文章讲述iOS中的状态栏 iOS开发中对状态栏的操作比较少,因为状态栏是系统级别的View,是受苹果保护的,不可以随便更改,不可以随便遮挡住。如果违反这些苹果的规范,那么APP将有可能上不了架。笔者就曾写过一个APP,因状态栏被提示框遮挡而被拒(杯具)了。 iOS开发中...
逃离了过往,和黑暗 我开始和时间赛跑 天真地以为,自己可以做得更好 却在前进的路上,再次弄丢了你 原谅我,只为和你开始的谎言 原谅我,不曾坦白的心 原谅我,…… 我们都要勇敢 都要好好的 在每一个黎明 都满怀希望的感恩 即将开始的艰辛伙伴云表格用起来怎么样,方便不?_百度知道
伙伴云表格用起来怎么样,方便不?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
玫瑰2015之恋
玫瑰2015之恋
采纳数:131
获赞数:1095
擅长:暂未定制
伙伴云表格我觉得是一款很好用的软件,用了伙伴云表格功能更强大,可以在线编辑表格,团队伙伴们都可以看到文件的最新版本,避免工作失误,提高工作效率的利器
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。伙伴云表格
最新文章●

我要回帖

更多关于 excel模糊搜索 的文章

 

随机推荐