Ver Fonte

1.修改CommonEditor Android Enum Select结果不正确。
2.修改CommonEditor Android 增加AutoComplete。

Pen Li há 8 anos atrás
pai
commit
95a6abc498
17 ficheiros alterados com 452 adições e 41 exclusões
  1. 145 0
      RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/CommonEditor/CommonEditorAutoCompleteAdapter.java
  2. 35 0
      RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/CommonEditor/CommonEditorEditAutoCompleteCellHolder.java
  3. 85 12
      RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/CommonEditorActivity.java
  4. 13 14
      RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/EnumSelectAndSort/EnumSelectAndSortActivity.java
  5. 14 14
      RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/EnumSlectActivity.java
  6. 1 1
      RedAnt Mobile/app/src/main/java/com/usai/redant/Result/SearchResultActivity.java
  7. 2 0
      RedAnt Mobile/app/src/main/res/layout/activity_enum_select_and_sort.xml
  8. 2 0
      RedAnt Mobile/app/src/main/res/layout/activity_enum_slect.xml
  9. 16 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_auto_complete_list_cell.xml
  10. 63 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_edit_auto_complete_cell.xml
  11. 66 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_edit_auto_complete_cell_small.xml
  12. 1 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_edit_cell.xml
  13. 1 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_edit_cell_small.xml
  14. 2 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_enum_cell.xml
  15. 2 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_enum_cell_small.xml
  16. 2 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_label_cell.xml
  17. 2 0
      RedAnt Mobile/app/src/main/res/layout/common_editor_label_cell_small.xml

+ 145 - 0
RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/CommonEditor/CommonEditorAutoCompleteAdapter.java

@@ -0,0 +1,145 @@
+package com.usai.redant.CommonEditor.CommonEditor;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.Filter;
+import android.widget.Filterable;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by macmini1 on 2017/12/18.
+ */
+
+public class CommonEditorAutoCompleteAdapter extends BaseAdapter implements Filterable {
+
+    private Context context;
+    private List<String> list = new ArrayList<>();
+    public List<String> dataSource;
+    private int resourceId,textViewId;
+
+    public CommonEditorAutoCompleteAdapter(Context context, int resourceId, int textViewId, List<String> dataSource) {
+        this.context = context;
+        this.dataSource = dataSource;
+    }
+
+    public void setDataSource(List<String> dataSource) {
+        this.dataSource = dataSource;
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public Filter getFilter() {
+        Filter filter = new Filter() {
+            /**
+             * 在后台线程执行,定义过滤算法
+             * @param constraint :就是你在输入框输入的字符串
+             * @return 符合条件的数据结果,会在下面的publishResults方法中将数据传给list
+             */
+            @Override
+            protected FilterResults performFiltering(CharSequence constraint) {
+                FilterResults results = new FilterResults();
+                if (constraint == null || constraint.length() == 0 || dataSource == null || dataSource.size() == 0) {
+                    //
+                    results.values = null;
+                    results.count = 0;
+                } else {
+                    //这个newList是实际搜索出的结果集合,实际上是将该newList的数据赋给了list
+                    List<String> newList = new ArrayList<>();
+                    for (String s : dataSource) {
+                        //包含就添加到newList中
+                        if (s.contains(constraint.toString().trim()
+                        )) {
+                            newList.add(s);
+                        }
+                    }
+                    //将newList传给results
+                    results.values = newList;
+                    results.count = newList.size();
+                    newList = null;
+                }
+                return results;
+            }
+
+            /**
+             * 本方法在UI线程执行,用于更新自动完成列表
+             * @param constraint
+             * @param results
+             */
+            @Override
+            protected void publishResults(CharSequence constraint, FilterResults results) {
+
+                // 主动再调用一次,获取最新的
+                results = performFiltering(constraint);
+
+                if (results != null && results.count > 0) {//有符合过滤规则的数据
+                    list.clear();
+                    list.addAll((List<String>) results.values);
+                    notifyDataSetChanged();
+                } else {//没有符合过滤规则的数据
+                    notifyDataSetInvalidated();
+                }
+            }
+
+            /**
+             * 将符合条件的数据转换为你想要的方式,一般无需实现
+             * 控制用户点击提示时要填充至输入框的文本内容。
+             */
+            @Override
+            public CharSequence convertResultToString(Object resultValue) {
+                return super.convertResultToString(resultValue);
+                //假如这里写 return "啊哈哈";
+                //那么,无论你点击哪个条目,出现在输入框的永远是"啊哈哈"这几个字。
+            }
+        };
+        return filter;
+    }
+
+    @Override
+    public int getCount() {
+        return list != null && list.size() > 0 ? list.size() : 0;
+    }
+
+    /**
+     * 这里必须返回list.get(position),否则点击条目后输入框显示的是position,而非该position的数据
+     *
+     * @param position
+     * @return
+     */
+    @Override
+    public Object getItem(int position) {
+        return list.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(final int position, View convertView, ViewGroup parent) {
+        TvViewHolder holder;
+        if (convertView == null) {
+            convertView = View.inflate(context, resourceId, null);
+            holder = new TvViewHolder();
+            holder.tv = (TextView) convertView.findViewById(textViewId);
+            convertView.setTag(holder);
+        } else {
+            holder = (TvViewHolder) convertView.getTag();
+        }
+        //注意这里不要为convertView添加点击事件,默认是点击后:①下拉窗收起;
+        //②点击的条目数据会显示在搜索框中;③光标定位到字符串末位。
+        //如果自己添加点击事件,就要首先实现上面的①、②、③。
+        holder.tv.setText(list.get(position));
+        return convertView;
+    }
+
+    class TvViewHolder {
+        TextView tv;
+    }
+
+}

+ 35 - 0
RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/CommonEditor/CommonEditorEditAutoCompleteCellHolder.java

@@ -0,0 +1,35 @@
+package com.usai.redant.CommonEditor.CommonEditor;
+
+import android.content.Context;
+
+import android.view.View;
+import android.widget.AutoCompleteTextView;
+
+import android.widget.TextView;
+
+import com.usai.redant.redantmobile.R;
+
+import org.json.JSONObject;
+
+
+
+public class CommonEditorEditAutoCompleteCellHolder extends CommonEditorEditCellHolder {
+
+//    public TextView name_lb;
+    public AutoCompleteTextView text_field;
+    public CommonEditorAutoCompleteAdapter autoCompleteAdapter;
+
+
+    public CommonEditorEditAutoCompleteCellHolder(Context context, View view) {
+        super(context,view);
+
+        name_lb = (TextView) view.findViewById(R.id.name_lb);
+        text_field = (AutoCompleteTextView) view.findViewById(R.id.textField);
+
+    }
+
+    @Override
+    public void setItem(JSONObject item_json, boolean readonly, View view) {
+        super.setItem(item_json, readonly, view);
+    }
+}

+ 85 - 12
RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/CommonEditorActivity.java

@@ -14,7 +14,6 @@ import android.text.InputFilter;
 import android.text.InputType;
 import android.text.TextWatcher;
 import android.util.Log;
-import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -22,18 +21,21 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import android.widget.AbsListView;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
 import android.widget.BaseExpandableListAdapter;
 import android.widget.Button;
 import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.ExpandableListView;
 import android.widget.Switch;
-import android.widget.TextView;
 
 
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorActionCellHolder;
+import com.usai.redant.CommonEditor.CommonEditor.CommonEditorAutoCompleteAdapter;
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorCellHolder;
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorDateRangeCellHolder;
+import com.usai.redant.CommonEditor.CommonEditor.CommonEditorEditAutoCompleteCellHolder;
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorEditCellHolder;
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorEnumCellHolder;
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorImageCellHolder;
@@ -45,7 +47,6 @@ import com.usai.redant.CommonEditor.CommonEditor.CommonEditorSectionHeaderHolder
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorSignatureCellHolder;
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorSwitchCellHolder;
 import com.usai.redant.CommonEditor.CommonEditor.CommonEditorTextViewCellHolder;
-import com.usai.redant.CommonEditor.EnumSelectAndSort.EnumSelectAndSortActivity;
 import com.usai.redant.redantmobile.R;
 import com.usai.redant.util.Network;
 
@@ -55,14 +56,14 @@ import org.json.JSONObject;
 
 import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.Iterator;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -1746,6 +1747,7 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
     public static int COMMON_EDITOR_CELL_TYPE_SECTION_HEADER = 10;
     public static int COMMON_EDITOR_CELL_TYPE_RANGE = 11;
     public static int COMMON_EDITOR_CELL_TYPE_DATE_RANGE = 12;
+    public static int COMMON_EDITOR_CELL_TYPE_AUTO_COMPLETE = 13;
 
     /**
      * ExpandListView Adapter
@@ -1868,9 +1870,16 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
                         setUpImageCellHolder((CommonEditorImageCellHolder)holder,convertView,item_json,readonly,groupPosition,childPosition);
 
                     } else if (control.equals("edit")) {
-                        convertView = LayoutInflater.from(mCtx).inflate(R.layout.common_editor_edit_cell_small,null);
-                        holder = new CommonEditorEditCellHolder(mCtx,convertView);
-                        setUpEditCellHolder((CommonEditorEditCellHolder)holder,convertView,item_json,readonly,groupPosition,childPosition);
+                        String autoComplete = item_json.optString("autocomplete");
+                        if (autoComplete != null && autoComplete.equals("true")) {
+                            convertView = LayoutInflater.from(mCtx).inflate(R.layout.common_editor_edit_auto_complete_cell_small,null);
+                            holder = new CommonEditorEditAutoCompleteCellHolder(mCtx,convertView);
+                            setUpEditAutoCompleteCellHolder((CommonEditorEditAutoCompleteCellHolder)holder,convertView,item_json,readonly,groupPosition,childPosition);
+                        } else {
+                            convertView = LayoutInflater.from(mCtx).inflate(R.layout.common_editor_edit_cell_small,null);
+                            holder = new CommonEditorEditCellHolder(mCtx,convertView);
+                            setUpEditCellHolder((CommonEditorEditCellHolder)holder,convertView,item_json,readonly,groupPosition,childPosition);
+                        }
 
                     } else if (control.equals("text")) {
                         convertView = LayoutInflater.from(mCtx).inflate(R.layout.common_editor_label_cell_small,null);
@@ -1956,8 +1965,16 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
                         setUpImageCellHolder((CommonEditorImageCellHolder)holder,convertView,item_json,readonly,groupPosition,childPosition);
 
                     } else if (control.equals("edit")) {
-                        holder = (CommonEditorEditCellHolder)convertView.getTag();
-                        setUpEditCellHolder((CommonEditorEditCellHolder)holder,convertView,item_json,readonly,groupPosition,childPosition);
+
+                        String autoComplete = item_json.optString("autocomplete");
+                        if (autoComplete != null && autoComplete.equals("true")) {
+                            holder = (CommonEditorEditAutoCompleteCellHolder)convertView.getTag();
+                            setUpEditAutoCompleteCellHolder((CommonEditorEditAutoCompleteCellHolder) holder,convertView,item_json,readonly,groupPosition,childPosition);
+                        } else {
+                            holder = (CommonEditorEditCellHolder)convertView.getTag();
+                            setUpEditCellHolder((CommonEditorEditCellHolder)holder,convertView,item_json,readonly,groupPosition,childPosition);
+                        }
+
 
                     } else if (control.equals("text")) {
                         holder = (CommonEditorLabelCellHolder)convertView.getTag();
@@ -2031,7 +2048,7 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
         @Override
         public int getChildTypeCount() {
 
-            return 13;
+            return 14;
         }
 
         @Override
@@ -2052,7 +2069,12 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
                 } else if (control.equals("img")) {
                     return COMMON_EDITOR_CELL_TYPE_IMAGE;
                 } else if (control.equals("edit")) {
-                    return COMMON_EDITOR_CELL_TYPE_EDIT;
+                    String autoComplete = item_json.optString("autocomplete");
+                    if (autoComplete != null && autoComplete.equals("true")) {
+                        return COMMON_EDITOR_CELL_TYPE_AUTO_COMPLETE;
+                    } else {
+                        return COMMON_EDITOR_CELL_TYPE_EDIT;
+                    }
                 } else if (control.equals("text")) {
                     return COMMON_EDITOR_CELL_TYPE_LABLE;
                 } else if (control.equals("action")) {
@@ -2584,6 +2606,7 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
             holder.textWatcher = textWatcher;
         } else {
             TextFieldTextWatcher textWatcher = (TextFieldTextWatcher)holder.textWatcher;
+            holder.text_field.addTextChangedListener(textWatcher);
             textWatcher.group = group;
             textWatcher.child = child;
         }
@@ -2609,6 +2632,26 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
 
 
 
+    }
+
+
+    public void setUpEditAutoCompleteCellHolder(final CommonEditorEditAutoCompleteCellHolder holder, View cell, JSONObject item_json, boolean readonly, int group, int child) {
+        setUpEditCellHolder(holder,cell,item_json,readonly,group,child);
+
+
+        holder.text_field.setThreshold(1);
+        if (holder.autoCompleteAdapter == null) {
+           List<String> dataSource = new ArrayList<String>();
+           int resourceId = R.layout.common_editor_auto_complete_list_cell;
+           int textViewId = R.id.auto_complete_value_tv;
+           CommonEditorAutoCompleteAdapter autoCompleteAdapter = new CommonEditorAutoCompleteAdapter(mCtx,resourceId, textViewId, dataSource);
+           holder.text_field.setAdapter(autoCompleteAdapter);
+           holder.autoCompleteAdapter = autoCompleteAdapter;
+        } else {
+            ((CommonEditorAutoCompleteAdapter)holder.text_field.getAdapter()).dataSource.clear();
+        }
+
+
     }
 
     private boolean can_see_price = true;
@@ -4271,6 +4314,7 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
         int group;
         int child;
         EditText textView;
+        boolean autoComplete = false;
 
         public TextFieldTextWatcher(Context ctx,EditText textView,int group,int child) {
             this.mCtx = ctx;
@@ -4301,6 +4345,7 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
             start_position = start;
             change_length = count;
             new_string_length = after;
+
         }
 
         /**
@@ -4349,6 +4394,34 @@ public class CommonEditorActivity extends AppCompatActivity implements View.OnLa
                 // cell clear shadow
             }
 
+            if (textView instanceof AutoCompleteTextView) {
+
+                final CommonEditorEditAutoCompleteCellHolder holder = (CommonEditorEditAutoCompleteCellHolder) ((View)textView.getParent().getParent()).getTag();
+                holder.autoCompleteAdapter.dataSource.clear();
+                new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+
+                        try {
+                            Thread.sleep(2 * 1000);
+                        } catch (Exception e) {
+
+                        }
+                        runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                String [] arr={"aa","aab","aac","abcd","afok"};
+                               for (int i = 0; i < 5; i++) {
+                                   holder.autoCompleteAdapter.dataSource.add(arr[i]);
+                               }
+                               holder.autoCompleteAdapter.notifyDataSetChanged();
+                            }
+                        });
+
+                    }
+                }).start();
+            }
+
             String keyboard = item_json.optString("keyboard");
             if (!keyboard.equals("number") && !keyboard.equals("int")) {
 

+ 13 - 14
RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/EnumSelectAndSort/EnumSelectAndSortActivity.java

@@ -283,9 +283,10 @@ public class EnumSelectAndSortActivity extends AppCompatActivity {
                                     val_json.put("check","0");
                                 }
                                 is_worked = select == 0;
-                                mCadedate.put("val_" + i,val_json);
-                                break;
+                            } else {
+                                val_json.put("check","0");
                             }
+                            mCadedate.put("val_" + i,val_json);
 
 
 
@@ -297,21 +298,19 @@ public class EnumSelectAndSortActivity extends AppCompatActivity {
 
                         JSONObject val_json = null;
                         int count = 0;
+                        boolean getIt = false;
                         for (int cc = 0; cc < mCadedate.optInt("count"); cc++) {
-                            if (count >= filter_count) {
-                                break;
-                            }
+
                             JSONObject search_json = mCadedate.optJSONObject("val_" + cc);
                             String value = search_json.optString("value");
                             boolean contain = value.toUpperCase().contains(mKeywords.toUpperCase());
-                            if (contain) {
+                            if (contain && count < filter_count) {
                                 count++;
-                            } else {
-                                continue;
                             }
 
-                            if (count - 1 == position) {
-                                val_json = search_json;
+                            val_json = search_json;
+                            if (!getIt && count - 1 == position) {
+                                getIt = true;
 
                                 //==========
                                 int select = val_json.optInt("check");
@@ -322,11 +321,11 @@ public class EnumSelectAndSortActivity extends AppCompatActivity {
                                 }
                                 is_worked = select == 0;
 
-
-                                mCadedate.put("val_" + cc,val_json);
-
-                                break;
+                            } else  {
+                                val_json.put("check","0");
                             }
+
+                            mCadedate.put("val_" + cc,val_json);
                         } // for cc
 
 //                        for (int sc = 0; sc < mCadedate.optInt("count"); sc++) {

+ 14 - 14
RedAnt Mobile/app/src/main/java/com/usai/redant/CommonEditor/EnumSlectActivity.java

@@ -244,9 +244,10 @@ public class EnumSlectActivity extends AppCompatActivity {
                                     val_json.put("check","0");
                                 }
                                 is_worked = select == 0;
-                                mCadedate.put("val_" + i,val_json);
-                                break;
+                            } else {
+                                val_json.put("check","0");
                             }
+                            mCadedate.put("val_" + i,val_json);
 
 
 
@@ -258,22 +259,19 @@ public class EnumSlectActivity extends AppCompatActivity {
 
                         JSONObject val_json = null;
                         int count = 0;
+                        boolean getIt = false;
                         for (int cc = 0; cc < mCadedate.optInt("count"); cc++) {
-                            if (count >= filter_count) {
-                                break;
-                            }
+
                             JSONObject search_json = mCadedate.optJSONObject("val_" + cc);
                             String value = search_json.optString("value");
                             boolean contain = value.toUpperCase().contains(mKeywords.toUpperCase());
-                            if (contain) {
+                            if (contain && count < filter_count) {
                                 count++;
-                            } else {
-                                continue;
                             }
 
-                            if (count - 1 == position) {
-                                val_json = search_json;
-
+                            val_json = search_json;
+                            if (!getIt && count - 1 == position) {
+                                getIt = true;
                                 //==========
                                 int select = val_json.optInt("check");
                                 if (select != 0) {
@@ -283,11 +281,13 @@ public class EnumSlectActivity extends AppCompatActivity {
                                 }
                                 is_worked = select == 0;
 
+                            } else  {
+                                val_json.put("check","0");
+                            }
+
+                            mCadedate.put("val_" + cc,val_json);
 
-                                mCadedate.put("val_" + cc,val_json);
 
-                                break;
-                            }
                         } // for cc
 
 //                        for (int sc = 0; sc < mCadedate.optInt("count"); sc++) {

+ 1 - 1
RedAnt Mobile/app/src/main/java/com/usai/redant/Result/SearchResultActivity.java

@@ -237,7 +237,7 @@ public class SearchResultActivity extends AppCompatActivity implements AbsListVi
         isLoading = false;//设置正在刷新标志位false
         invalidateOptionsMenu();
 
-        progressDialog.hide();
+        progressDialog.dismiss();
     }
 
 

+ 2 - 0
RedAnt Mobile/app/src/main/res/layout/activity_enum_select_and_sort.xml

@@ -20,6 +20,8 @@
             android:layout_marginTop="5dp"
             android:layout_marginBottom="5dp"
             android:background="@drawable/circle_corner_border"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
             >
             <EditText
                 android:id="@+id/common_editor_enum_select_sort_search_bar"

+ 2 - 0
RedAnt Mobile/app/src/main/res/layout/activity_enum_slect.xml

@@ -21,6 +21,8 @@
             android:layout_marginTop="5dp"
             android:layout_marginBottom="5dp"
             android:background="@drawable/circle_corner_border"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
             >
             <EditText
                 android:id="@+id/common_editor_enum_search_bar"

+ 16 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_auto_complete_list_cell.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="80dp">
+
+    <TextView
+        android:id="@+id/auto_complete_value_tv"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="5dp"
+        android:gravity="start|center_vertical"
+        android:textColor="#000000"
+        android:textSize="17sp"
+        />
+
+</RelativeLayout>

+ 63 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_edit_auto_complete_cell.xml

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="44dp"
+              android:orientation="horizontal">
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="44dp"
+        android:orientation="horizontal"
+        >
+
+        <RelativeLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:layout_centerVertical="true"
+            >
+
+            <TextView
+                android:id="@+id/name_lb"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="5dp"
+                android:layout_marginStart="5dp"
+                android:textSize="17sp"
+                android:textColor="#000000"
+                android:text="Label"
+                android:gravity="left|center_vertical"
+                />
+
+            <TextView
+                android:id="@+id/start_mark"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_toEndOf="@id/name_lb"
+                android:layout_toRightOf="@id/name_lb"
+                android:layout_alignTop="@id/name_lb"
+                android:text="*"
+                android:textColor="#000000"
+                />
+
+        </RelativeLayout>
+
+        <AutoCompleteTextView
+            android:id="@+id/textField"
+            android:layout_width="0dp"
+            android:layout_weight="4"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="5dp"
+            android:layout_marginStart="5dp"
+            android:layout_marginTop="5dp"
+            android:layout_marginRight="5dp"
+            android:layout_marginEnd="5dp"
+            android:lines="1"
+            android:ellipsize="end"
+            />
+
+        </LinearLayout>
+
+</LinearLayout>

+ 66 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_edit_auto_complete_cell_small.xml

@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="70dp"
+              android:orientation="vertical">
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="70dp"
+        android:orientation="vertical"
+        >
+
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:layout_centerVertical="true"
+            >
+
+            <TextView
+                android:id="@+id/name_lb"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="5dp"
+                android:layout_marginStart="5dp"
+                android:textSize="17sp"
+                android:textColor="#000000"
+                android:text="Label"
+                android:gravity="left|center_vertical"
+                />
+
+            <TextView
+                android:id="@+id/start_mark"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_toEndOf="@id/name_lb"
+                android:layout_toRightOf="@id/name_lb"
+                android:layout_alignTop="@id/name_lb"
+                android:text="*"
+                android:textColor="#000000"
+                />
+
+        </RelativeLayout>
+
+
+        <AutoCompleteTextView
+            android:id="@+id/textField"
+            android:layout_width="match_parent"
+            android:layout_weight="2"
+            android:layout_height="0dp"
+            android:layout_marginLeft="5dp"
+            android:layout_marginStart="5dp"
+            android:layout_marginTop="5dp"
+            android:layout_marginRight="5dp"
+            android:layout_marginEnd="5dp"
+            android:lines="1"
+            android:ellipsize="end"
+            />
+
+
+    </LinearLayout>
+
+</LinearLayout>

+ 1 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_edit_cell.xml

@@ -55,6 +55,7 @@
             android:layout_marginRight="5dp"
             android:layout_marginEnd="5dp"
             android:lines="1"
+            android:ellipsize="end"
             />
 
         </LinearLayout>

+ 1 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_edit_cell_small.xml

@@ -57,6 +57,7 @@
             android:layout_marginRight="5dp"
             android:layout_marginEnd="5dp"
             android:lines="1"
+            android:ellipsize="end"
             />
 
 

+ 2 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_enum_cell.xml

@@ -78,6 +78,8 @@
                 android:text="Label"
                 android:gravity="start|center_vertical"
                 android:textAlignment="textStart"
+                android:maxLines="1"
+                android:ellipsize="end"
                 />
 
 

+ 2 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_enum_cell_small.xml

@@ -78,6 +78,8 @@
                 android:text="Label"
                 android:gravity="start|center_vertical"
                 android:textAlignment="textStart"
+                android:maxLines="1"
+                android:ellipsize="end"
                 />
 
 

+ 2 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_label_cell.xml

@@ -34,6 +34,8 @@
             android:text="Label"
             android:gravity="right|center_vertical"
             android:layout_margin="5dp"
+            android:maxLines="1"
+            android:ellipsize="end"
             />
 
     </LinearLayout>

+ 2 - 0
RedAnt Mobile/app/src/main/res/layout/common_editor_label_cell_small.xml

@@ -34,6 +34,8 @@
             android:text="Label"
             android:gravity="right|center_vertical"
             android:layout_margin="5dp"
+            android:maxLines="1"
+            android:ellipsize="end"
             />
 
     </LinearLayout>