精华内容
下载资源
问答
  • 安卓表单数据的展示方式~!

    千次阅读 2017-01-22 17:52:09
    最进公司再做一个办公类的软件,要把PC端的表单数据展示到手机上面!可以让你们看看,想象有多么恶心。数据是一个object,不是数组,也不能弄个listview去一行行的展示。刚开始就是用XML布局去写代码,写好了20个...

    最进公司再做一个办公类的软件,要把PC端的表单数据展示到手机上面!可以让你们看看,想象有多么恶心。

    这里写图片描述

    数据是一个object,不是数组,也不能弄个listview去一行行的展示。刚开始就是用XML布局去写代码,写好了20个左右的表单之后,需求变了(客户比较恶心),说要变样式,标题中间需要加一些空格,感觉要疯了一样

    这里写图片描述

    要做成这种样式,然后还要去修改布局,而且增删字段特别不方便,然后就想着不能这样做了,万一又改需求了,有人说可以用style统一样式啊,那样也可以,但是每个界面可能又30-40个字段需要去展示,又两行标题的有一行标题的,有可以编辑的,有列表样式的。每个界面都要去findViewById,然后去设置值,虽然可以用注解,但是维护起来很不方便,

    我想到了手动去添加代码的方式,增删改都很方便,不用再去布局和代码里面去找了。

    第一步

    确定每个表单都有什么样式,然后就可以去自定义自己的样式了;我们这个表单的样式最多的一行标题,两行标题还有附件的样式,
    

    我就挑最简单的样式给大家介绍一下,主要是这个思想:

    首先创建一个single_title_view.xml文件:

    <?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="wrap_content"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">
    
            <TextView
    
                style="@style/custum_title_style"
                android:id="@+id/single_item_tiele"
                android:layout_height="match_parent"
                android:paddingStart="5dp"
                android:paddingEnd="5dp"
                android:paddingBottom="7dp"
                android:paddingTop="8dp"
                 />
    
            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/line_color"/>
    
            <TextView
    
                android:id="@+id/single_item_content"
                android:layout_width="0dp"
                android:textColor="@color/content_color1"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:paddingStart="5dp"
                android:paddingEnd="5dp"
                android:paddingBottom="7dp"
                android:paddingTop="8dp"/>
    
    
    
    
            <TextView
    
                android:visibility="gone"
                android:id="@+id/single_item_danwei"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:paddingStart="5dp"
                android:paddingEnd="5dp"
                android:paddingBottom="7dp"
                android:paddingTop="8dp" />
        </LinearLayout>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="@color/line_color"/>
    </LinearLayout>
    

    下面来看自定义组合控件SingleTitleView

    package com.demo.liebiao;
    
    import android.content.Context;
    import android.graphics.Color;
    import android.util.AttributeSet;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    /**
     * Created by lixuce on 2016/11/17.
     * 单行标题控件
     * setitem_title(Strins s)  设置标题
     * setitem_content(String s) 设置内容
     * setDanwei(String s)设置单位
     */
    
    public class SingleTitleView extends LinearLayout {
    
        private TextView title_tv;
        private TextView content_tv;
        private TextView danwei_tv;
    
        public SingleTitleView(Context context) {
            super(context);
    
            initView(context);
        }
    
    
    
        private void initView(Context context) {
            View.inflate(context, R.layout.single_title_view, this);
            title_tv = ((TextView) findViewById(R.id.single_item_tiele));
            content_tv = ((TextView) findViewById(R.id.single_item_content));
            danwei_tv = ((TextView) findViewById(R.id.single_item_danwei));
    
        }
        /**
         * 设置标题
         * @param title  标题内容
         */
        public void setitem_title(String title) {
            if (isNotNull(title, title_tv)) {
                title_tv.setText(StringUtils.getformentString(title));
            }
        }
        /**
         * 设置内容
         * @param content  内容
         */
        public void setitem_content(String content) {
            if (isNotNull(content, content_tv)) {
                content_tv.setText(content);
            }
        }
        /**
         * 设置单位
         * @param danwei 单位内容
         */
        public void setDanwei(String danwei){
            if (isNotNull(danwei,danwei_tv)){
                danwei_tv.setVisibility(View.VISIBLE);
                danwei_tv.setText(danwei);
                if (">".equals(danwei)) {
                    danwei_tv.setTextColor(Color.parseColor("#057dff"));
                }
            }
        }
    
        public void setContentColor(int s){
            content_tv.setTextColor(s);
        }
    
        /**
         * 判断控件和内容是否为空
         * @param s  内容
         * @param t   控件
         * @return    false==》空;true==》不为空
         */
        private boolean isNotNull(String s, TextView t) {
            return (s!=null&&!"".equals(s)&&!"null".equals(s)&&t!=null);
        }
    }
    

    组合控件里面主要封装了三个TextView 可以通过对应的方法去设置标题,内容,单位。

    第二步

    再需要展示表单的布局文件里面只需要去添加一个ScrollView–LinearLayout

    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <LinearLayout
            android:id="@+id/ll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
        </LinearLayout>
    </ScrollView>

    再代码里面通过findViewById去查找到linearLayout

     LinearLayout layout = (LinearLayout) view.findViewById(R.id.ll);
    
     SingleTitleView singleTitleView = new SingleTitleView(this);
            singleTitleView.setitem_title("我是表单的标题");
            singleTitleView.setitem_content("我是表单的内容");
            singleTitleView.setDanwei("元");
    
    layout.addView(singleTitleView);

    是不是很方便,一行代码就加载出来了,不用再去布局文件里面去findView了,activity类里面干净整齐,而且样式统一。如果客户再改需求什么,界面上面什么操作也不用做,直接去修改自定义的组合控件就可以,增删改都很方便,如果样式多的话可以创建一个工具类;

    我只是提了一个最简单的例子,重要的这个是思想。

    如果你要加载的详情界面的值是一个Object的话,不要再用listView去判断每行什么TYPE了,可以试试直接代码动态添加。

    展开全文
  • 安卓表单布局

    2016-12-08 23:28:51
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_pa

    这里写图片描述

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
     >
        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5.0sp"
            android:layout_marginRight="5.0sp"
            android:layout_marginTop="10.0sp"
            android:stretchColumns="1" >
    
    
    <!--TableRow 表示行,每行里面就可以 通过其他View来实现我们想要的方格-->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#ff000000" >
    
                <TextView
                    android:layout_width="0.0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1.0"
                    android:background="#ffffffff"
                    android:gravity="center"
                    android:text="表格布局带表格线"
                    android:textColor="#ff000000"
                    android:textSize="25.0sp"
                    android:textStyle="bold" />
            </TableRow>
    
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff000000" >
    
                <TextView
                    android:layout_width="0.0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="1.0dip"
                    android:layout_marginLeft="1.0dip"
                    android:layout_marginTop="1.0dip"
                    android:layout_weight="1.0"
                    android:background="#ffffffff"
                    android:gravity="center"
                    android:padding="6.0dip"
                    android:text="第一行"
                    android:textColor="#ff000000"
                    android:textStyle="bold" />
    
                <TextView
                    android:id="@+id/delivercompanyname"
                    android:layout_width="0.0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="1.0dip"
                    android:layout_marginLeft="1.0dip"
                    android:layout_marginTop="1.0dip"
                    android:layout_weight="1.0"
                    android:text="第二行"
                    android:background="#ffffffff"
                    android:gravity="center"
                    android:textColor="#ff000000" />
    
                <TextView
                    android:layout_width="0.0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="1.0dip"
                    android:layout_marginLeft="1.0dip"
                    android:layout_marginTop="1.0dip"
                    android:layout_weight="1.0"
                    android:background="#ffffffff"
                    android:gravity="center"
                    android:padding="6.0dip"
                   android:text="第三行"
                    android:textColor="#ff000000"
                    android:textStyle="bold" />
    
                <TextView
                    android:id="@+id/repairtime"
                    android:layout_width="0.0dip"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="1.0dip"
                    android:layout_marginLeft="1.0dip"
                    android:layout_marginRight="1.0dip"
                    android:layout_marginTop="1.0dip"
                    android:layout_weight="1.0"
                    android:text="第四行"
                    android:background="#ffffffff"
                    android:ellipsize="marquee"
                    android:gravity="center"
                    android:textColor="#ff000000" />
            </TableRow>
    
    </TableLayout>
    </RelativeLayout>

    android:background=”#ff000000”背景设置成黑色,

    android:layout_marginBottom="1.0dip"
                    android:layout_marginLeft="1.0dip"
                    android:layout_marginTop="1.0dip"
    android:background="#ffffffff"

    设置背景为白色,通过与上边缘下边缘左边缘相隔1dip,这样就实现了表格有了表格线,当最下面有一个大黑色的背景,上面在一个白色背景重叠并且白色背景的小于黑色背景这样就出现了表格线,我们如果要设置表格线的粗细只需设置他们相隔多少dip就行

    展开全文
  • ODK Collect ODK Collect is an Android app for filling out forms. It is designed to be used in resource-constrained environments with challenges such as unreliable connectivity or power ...
  • //适用于安卓4-8,当调用键盘的时候将页面向上推 if(/Android[4-8]/.test(navigator.appVersion)){ window.addEventListener('resize',function(){ if(document.activeElement.tagName==='INPUT'||document.activeEl...

    //适用于安卓4-8,当调用键盘的时候将页面向上推
     if (/Android [4-8]/.test(navigator.appVersion)) {
       window.addEventListener('resize', function () {
         if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
            window.setTimeout(function () {
              document.activeElement.scrollIntoViewIfNeeded(true);
            }, 0)
          }
       })

    展开全文
  • post表单抓到了,却老是登不上,有木有人知道,谢谢啦,,,!,,,,,,,,,,,
  • 学校的网络系统上总有很多需要登陆的地方...但是开始总觉得无从下手,因为当时什么都不懂,基于这个需求就反复查询了一些资料,终于,在弄清楚了一些概念和动用了抓包工具后,我发现我的想法离实现一步步靠近了...... ...

    学校的网络系统上总有很多需要登陆的地方,但死板的页面又不是很友好,往往需要打开PC通过层层页面登陆,却只是为了查询某个很短小的信息,所以很早就想把整个查询过程做成一个客户端,方便你我他。但是开始总觉得无从下手,因为当时什么都不懂,基于这个需求就反复查询了一些资料,终于,在弄清楚了一些概念和动用了抓包工具后,我发现我的想法离实现一步步靠近了......

    首先用抓包工具(像HTTP Analyzer就比较好用)在后台记录,自己在前台手动登陆一次,抓取封包后分析整个过程

    主要要点如下:

    1.整个过程访问了几个页面

    2.POST or GET

    3.请求的是哪个页面

    4.传了哪些参数

    5.是否有Redirect(301,302)

    6.后续的操作是否用到第一步获取的的COOKIES,主要是SESSION ID

    服务器往往通过SESSION ID判断你是否登陆

    (如果出现6的情况,就稍微复杂一些了)


    后续用HttpClient模拟相应的操作即可

    http://ipjmc.iteye.com/blog/1577495 这里转载了HttpClient一个很简单的例程

    获取内容可以使用强大的Jsoup包,或者只是文字信息,干脆使用同样强大的正则

    前五项通过HttpClient+Jsoup都能解决

    我们主要来看看碰到6的情况怎么办

    List<Cookie> cookies = httpClient.getCookieStore().getCookies();    
    	 			        if (cookies.isEmpty()) {    
    	 			        Log.i(TAG, "NONE");    
    	 			        } else 
    	 			        {                   
    	 			        for (int i = 0; i < cookies.size(); i++) {    
    	 			        //保存cookie     
    	 			        
    	 			        Log.d(TAG, cookies.get(i).getName()+"="+cookies.get(i).getValue() ); 
    	 			        Log.d(TAG, cookies.get(i).getName()+"=" );    
    	 			        } 
    	 			        cookie=cookies.get(0).getValue();

    这里通过调试发现序列为0的恰好是SESSION ID就直接用了


    获取出来了

    后续再连接其他页面时,就可以把这个SESSION ID加到HEADER里带着登陆身份为所欲为了

    getMethod1.setHeader("Cookie", "JSESSIONID="+cookie);
    	 				        HttpResponse response = httpClient.execute(getMethod1); //发起GET请求  
    	 				        Header location=response.getFirstHeader("location");
    	 				        if (location!=null) Log.i(TAG, location.getValue().toString());
    	 				       
    	 				        result=EntityUtils.toString(response.getEntity(),"utf-8");
    	 				        Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码  
    

    这样一来,以后如果有什么网站没有提供登陆API,我们也可以自制手机登陆客户端了


    展开全文
  • JS表单调用安卓原生图片选择

    万次阅读 2018-08-14 11:57:24
    1、重写WebChromeClient中onShowFileChooser方法: webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onShowFileChooser(WebView webView, ValueCallback&...
  • */  package com.jiuchongju.util;    import java.util.ArrayList;  import java.util.List;  import java.util.Map;    import org.apache.http.HttpResponse;  import org.apache....
  • 在使用jquery插件做省市联动时,安卓手机样式显示正常,而苹果手机被默认样式影响,导致两个终端显示效果不统一,这是由于默认样式导致,需要去掉默认样式;显示差异如下 安卓端: ios端: 解决方案: 加入这段...
  • 主要代码是在表单加上一个类名 input-hook ,在 mounted 监听事件。 const el = document . documentElement || document . body const originHeight = el . clientHeight window . addEventListener...
  • //适用于安卓4-8,当调用键盘的时候将页面向上推  if (/Android [4-8]/.test(navigator.appVersion)) {  window.addEventListener('resize', function () {  if (document.activeElement.tagName ===...
  • 一、思路 设计动态class,当输入框onfocus状态触发事件激活class,并且滚动到页面底部,当输入框onblur状态关闭class <style> .center-box-input-position { margin-top: 0px;... :class="{'center-box-input...
  • 常用表单级别控件: android:layout_width="fill_parent" android:layout_height="fill_parent" > and
  • 用PagerView和ListView实现表单填写功能.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • # 我测试过,使用pc端和安卓手机提交是没有问题的,每次提交成功都会弹出提示框 # 提示提交成功, # 但是当我使用苹果手机的浏览器登录网页并提交表单的时候,每次提交都不会弹出提示框作出提示,而且每次提交大...
  • TML5 手机页面 输入表单被键盘遮挡住了 请问 大神 怎么 js 或者 JQ 判断安卓手机软键盘的键盘隐藏键按下去了? 有使用 uexWindow 方法 能判断到确定键 是 13 但是不知道这个键的键值 是什么? 或者有什么其他方法...
  • 使用表单布局创建响应式的精美的表单布局。表单布局就是 列表,但是会有一些拓展。 简单的表单布局 让我们看一种最简单的表单布局: &lt;div class="list-block"&gt;  &lt;ul&...
  • 获取文件: public void Init() { noScrollgridview = (GridView) findViewById(R.id.noScrollgridview); noScrollgridview.setSelector(new ColorDrawable(Color.TRANSP...
  • Framework7 有一些方法可以让读取和填写表单数据变得非常方便: Form 转化成 JSON 使用 app 对应的方法可以非常方便把所有的表单元素转化成一个 JSON 对象: myApp.formToJSON(form) - 把表单转换成JSON对象 ...
  • 安卓的应用程序中经常有显示表单的功能,下面我们将这样的使用方法分享给大家。 这个例子实现的是也手机屏幕上显示三个标题对应的表单表单中显示相应的数据列表。 整体思路:在xml文件中添加一个LinearLayout...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 300
精华内容 120
关键字:

安卓表单