精华内容
下载资源
问答
  • 美化输入框代码

    在res/drawable路径下新建et_sharp.xml 文件

    话不多说直接上代码

    <?xml version="1.0" encoding="UTF-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <!-- 设置内边距 -->
    <padding 
           android:left="10dp" 
           android:right="10dp" 
           android:top="7dp"
           android:bottom="7dp"  />
         <!-- 设置圆角矩形 -->
    <corners android:radius="25dp" />
            <!-- 输入框背景颜色 -->
    <solid android:color="#ffffff"  ></solid>
            <!-- 外边框线的粗细及其颜色 -->
    <stroke 
         android:width="2px" 
         android:color="#00ee00" >
         </stroke>
    
    </shape>
    
    

    上效果图
    美化输入框EditTe

    展开全文
  • 使用过Android不同版本,或者不同的Android的rom的同学应该都知道,Android的EditText的样式在不同它们上的显示是各式各样; 那我们能不能通过什么途径来让它们的样子统一起来呢?答案是肯定的... 这是我做的一...

    使用过Android不同版本,或者不同的Android的rom的同学应该都知道,Android的EditText的样式在不同它们上的显示是各式各样;

    那我们能不能通过什么途径来让它们的样子统一起来呢?答案是肯定的...

    这是我做的一个登录界面,虽然还有些粗糙,但是实现了输入框样式的统一;

    我的实现思路是这样的(可能大家会有不同的方案,欢迎分享),首先定义一个RelativeLayout,然后再里面放一个ImageView,ImageView的背景色使用白色,高度确定,这里是120dp;

    然后再定义一个EditText,不要背景(这样就实现了去掉输入框的边框),上方和左方与图片对齐;然后再弄一个分界线,我这里用的是ImageView 0.5dp,颜色是灰色;

    下面在来一个EditText,左边和下边跟ImageView对齐;然后调节下字体颜色大小之类的,就完成了这个功能...

    具体界面布局:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#1885DC"
        android:gravity="center_horizontal"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="100dp"
            android:text="@string/title"
            android:textColor="@android:color/white"
            android:textSize="36sp" />
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="30dp" >
    
            <ImageView
                android:id="@+id/img_bg"
                android:layout_width="fill_parent"
                android:layout_height="120dp"
                android:background="#FFF"
                android:contentDescription="@string/app_name" />
    
            <EditText
                android:id="@+id/et_username"
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:layout_alignLeft="@+id/img_bg"
                android:layout_alignTop="@+id/img_bg"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@null"
                android:hint="@string/hint_username"
                android:inputType="number"
                android:textSize="16sp" />
    
            <ImageView
                android:id="@+id/login_driver"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_below="@+id/et_username"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:background="@android:color/darker_gray"
                android:contentDescription="@string/app_name" />
    
            <EditText
                android:id="@+id/et_password"
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:layout_alignBottom="@+id/img_bg"
                android:layout_alignLeft="@+id/img_bg"
                android:layout_below="@+id/et_username"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@null"
                android:hint="@string/hint_password"
                android:inputType="textPassword"
                android:textSize="16sp" />
    
            <Button
                android:onClick="login"
                android:id="@+id/button_login"
                android:layout_width="fill_parent"
                android:layout_height="45dp"
                android:layout_below="@+id/et_password"
                android:layout_marginTop="5dp"
                android:background="@drawable/login_button"
                android:text="@string/login"
                android:textColor="#FFF"
                android:textSize="16sp" />
            <Button
                android:id="@+id/button_visit"
                android:onClick="visit"
                android:layout_width="fill_parent"
                android:layout_height="45dp"
                android:layout_below="@+id/button_login"
                android:layout_marginTop="5dp"
                android:background="@drawable/visitor_button"
                android:text="@string/visitor"
                android:textColor="#FFF"
                android:textSize="16sp" />
            <Spinner 
                android:layout_below="@+id/button_visit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/banji_spinner"
                android:visibility="gone"/>
        </RelativeLayout>
    
    </LinearLayout>












    展开全文
  • Custom_Android_UI 项目Github地址,点击前往。 安卓自定义菜单子项控件,底部弹出框控件,验证码输入框控件。 没有做成插件,因为美观没有进行处理,不过功能是出来了,想用的码友可以把源码拿去稍微美化下使用。 ...

    Custom_Android_UI

    项目Github地址,点击前往。

    安卓自定义菜单子项控件,底部弹出框控件,验证码输入框控件。

    没有做成插件,因为美观没有进行处理,不过功能是出来了,想用的码友可以把源码拿去稍微美化下使用。

    这里一共做了三个自定义UI:

    • 菜单子列项
    • 底部弹出框
    • 验证码输入框

    直接先来看看实现图把:

    菜单子列项

    底部弹出框


    验证码输入框



    好的,不是很美观,这里我们主要说说功能的实现讨论。

    菜单子列项
    这个实现起来比较简单,定义一个布局,这里我们继承FrameLayout类进行定制我们自定义控件,我们不需要重写布局方法和绘制方法,这里我们主要做个功能的集成就好,比如点击事件的回调,文本内容的获取设置以及图片的设置等。
    设置属性

    //这里我们设置了三个属性
    //title属性 文本标题
    //hint属性 提示文字
    //icon属性 icon图标
     <com.example.a86157.custom_ui.Menu.Menu_Child_Layout
                   android:layout_width="match_parent"
                   android:layout_height="50dp"
                   app:title="WX"
                   app:hint="马化腾"
                   app:icon="@drawable/ahms"/>
    

    那么我们怎么进行这种属性的绑定操作呢,很简单,我们定义个xml文件,使用 declare-styleable 来定义我们自定义控件的属性,那么你又可能会想问为啥我要用declare-styleable这个东西来定义,这样说吧,我们安卓基础控件TextView有个text属性,其实在源码中也是有这样的类似xml文件定义

    看谷歌爸爸的源码也是通过R.Sty…啥的读取,那么这里我们也是这样定义我们自己的控件的属性咯。

    declare-styleable属性介绍

    在代码中就这样进行读取我们的配置属性信息:

      TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Menu_Child_Layout);
            setTitle(a.getString(R.styleable.Menu_Child_Layout_title));
            setHint(a.getString(R.styleable.Menu_Child_Layout_hint));
            setImage(a.getResourceId(R.styleable.Menu_Child_Layout_icon, 10000));
    

    点击事件回调

     public void setViewOnlickListener(OnClickListener onlickListener){
            view.setOnClickListener(onlickListener);
        }
    
    

    设置图片

    setImage(a.getResourceId(R.styleable.Menu_Child_Layout_icon, 10000));
    

    嗯,那么这个最简单的控件我们就介绍完毕了,下面我们来说一下 底部弹出框 实现,(验证码输入框也是依葫芦画瓢就不讲这个的实现了,有兴趣的看下源码就懂了)

    底部弹出框:
    这里我们定义一个类继承了ViewGroup重写布局以及测量方法,这里唯一的难点就是该使用怎样的布局以及高度的测量,宽度就是百分之百了。
    这里需要科普一下ViewGroup以及View这俩个类嘛?
    我还是科普一下,凑凑字数把,等下文章内容太少显得我写的文章太low了。

    View就是所有UI控件的老祖宗,虽然我们View也使用了ViewGroup包裹,但是我们的ViewGrop是集成了View写的。
    看下ViewGroup的源码,没错把,确实继承了View,

    public abstract class ViewGroup extends View implements ViewParent, ViewManager {
        private static final String TAG = "ViewGroup";
    
        @UnsupportedAppUsage
        private static final boolean DBG = false;
    
        /**
         * Views which have been hidden or removed which need to be animated on
         * their way out.
         * This field should be made private, so it is hidden from the SDK.
         * {@hide}
         */
        @UnsupportedAppUsage
        protected ArrayList<View> mDisappearingChildren;
    
    ........
    

    再来看看我们很熟悉了TextView:

    public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {
        static final String LOG_TAG = "TextView";
        static final boolean DEBUG_EXTRACT = false;
        private static final float[] TEMP_POSITION = new float[2];
    
        // Enum for the "typeface" XML parameter.
        // TODO: How can we get this from the XML instead of hardcoding it here?
        /** @hide */
        @IntDef(value = {DEFAULT_TYPEFACE, SANS, SERIF, MONOSPACE})
        @Retention(RetentionPolicy.SOURCE)
        public @interface XMLTypefaceAttr{}
        private static final int DEFAULT_TYPEFACE = -1;
        private static final int SANS = 1;
        private static final int SERIF = 2;
        private static final int MONOSPACE = 3;
    
        // Enum for the "ellipsize" XML parameter.
    
    ........
    

    没错把,都是继承了View写的。
    那么我们平时使用界面的关系应该是这样的:
    window -> viewgroup -> view
    一个window一个viewgroup多个view
    就是这样的关系啦。

    View里面有我们组件常用的属性,比如内边距外边距,监听等一些组件的公共属性。
    比如Backgournd:

     @ViewDebug.ExportedProperty(deepExport = true, prefix = "bg_")
       @UnsupportedAppUsage
       private Drawable mBackground;
       private TintInfo mBackgroundTint;
    
    ........
    

    比如内边距属性:

      @ViewDebug.ExportedProperty(category = "padding")
       @UnsupportedAppUsage
       protected int mPaddingLeft = 0;
       /**
        * The final computed right padding in pixels that is used for drawing. This is the distance in
        * pixels between the right edge of this view and the right edge of its content.
        * {@hide}
        */
       @ViewDebug.ExportedProperty(category = "padding")
       @UnsupportedAppUsage
       protected int mPaddingRight = 0;
       /**
        * The final computed top padding in pixels that is used for drawing. This is the distance in
        * pixels between the top edge of this view and the top edge of its content.
        * {@hide}
        */
       @ViewDebug.ExportedProperty(category = "padding")
       @UnsupportedAppUsage
       protected int mPaddingTop;
    
    ........
    

    看了下源码,这样子对View是不是有点小了解了。
    那么ViewGroup就是包含了很多个View,是不是有点想我们的布局,比如FrameLayout,线性布局,相对布局等等。都是继承ViewGroup进行重写。
    上源码看:

      * only if {@link #setMeasureAllChildren(boolean) setConsiderGoneChildrenWhenMeasuring()}
     * is set to true.
     *
     * @attr ref android.R.styleable#FrameLayout_measureAllChildren
     */
    @RemoteView
    public class FrameLayout extends ViewGroup {
        private static final int DEFAULT_CHILD_GRAVITY = Gravity.TOP | Gravity.START;
    
    
    .......
    

    ViewGroup实现了四种构造方法:

        public ViewGroup(Context context) {
            this(context, null);
        }
    
        public ViewGroup(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public ViewGroup(Context context, AttributeSet attrs, int defStyleAttr) {
            this(context, attrs, defStyleAttr, 0);
        }
    
        public ViewGroup(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
            super(context, attrs, defStyleAttr, defStyleRes);
    
            initViewGroup();
            initFromAttributes(context, attrs, defStyleAttr, defStyleRes);
        }
    

    这是必须实现的方法,用来定位我们组件的位置

        @Override
        protected abstract void onLayout(boolean changed,
                int l, int t, int r, int b);
        //ViewGroup中包含组件的宽高设置
        protected void measureChildren(int widthMeasureSpec, int heightMeasureSpec) {
            final int size = mChildrenCount;
            final View[] children = mChildren;
            for (int i = 0; i < size; ++i) {
                final View child = children[i];
                if ((child.mViewFlags & VISIBILITY_MASK) != GONE) {
                    measureChild(child, widthMeasureSpec, heightMeasureSpec);
                }
            }
        }
    

    同时我们最好在重写一下View里面测量组件宽高的方法,竟然自定义了当然这么重要的也要重写

      protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
                    getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
        }
    
    

    这里我们就可以进行设置了组件的
    1.颜色
    2.文本
    3.图片
    4.定位
    5.宽高
    这样子我们就能定制大部分自定义组件的需求了。

    这里我们就简单的科普了一下View和ViewGroup。言归正传,来说一下我们底部弹出框的实现逻辑:

    首先我们定义了一个bottom_layout.xml的布局文件

     <FrameLayout
            android:id="@+id/layout1"
            android:layout_gravity="bottom"
            android:layout_margin="5dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <TextView
                android:id="@+id/text1"
                android:layout_width="100dp"
                android:layout_height="10dp"
                android:layout_gravity="center"
                android:layout_margin="2dp"
                android:background="@drawable/shape" />
        </FrameLayout>
    

    很简单就用了一个Framlayout布局里面放置一个TextView设置置底部完毕。 然后我们把这个布局添加到我们自定义控件: 这是我们的自定义控件类:
    ``` public class Bottom_Layout extends ViewGroup{ private View view; private Context context; private TextView toptv; private FrameLayout frameLayout1; private boolean bool=false; private int value; private KeyBoardHelper boardHelper;
    public Bottom_Layout(Context context) {
        super(context);
    }
    
    public Bottom_Layout(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    
    public Bottom_Layout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.context=context;
        init(context,attrs);
    }
    
    private void init(Context context, AttributeSet attrs){
        //LayoutInflater 取得xml里定义的view
        LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.bottom_layout,this,true);
        toptv = view.findViewById(R.id.text1);
        frameLayout1 = view.findViewById(R.id.layout1);
        toptv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(bool){
                    bool=!bool;
                    close_state();
                }else{
                    bool=!bool;
                    open_state(0);
                }
            }
        });
        Activity activity = (Activity) context;
        boardHelper = new KeyBoardHelper(activity);
        boardHelper.onCreate();
        boardHelper.setOnKeyBoardStatusChangeListener(onKeyBoardStatusChangeListener);
    }
    
    private KeyBoardHelper.OnKeyBoardStatusChangeListener onKeyBoardStatusChangeListener = new KeyBoardHelper.OnKeyBoardStatusChangeListener() {
        @Override
        public void OnKeyBoardPop(int keyBoardheight) {
            open_state(keyBoardheight);
        }
        @Override
        public void OnKeyBoardClose(int oldKeyBoardheight) {
            open_state(0);
        }
    };
    
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
        int width = wm.getDefaultDisplay().getWidth();
        int height = wm.getDefaultDisplay().getHeight();
        value = height-Utils.getStatusBarHeight(context)-frameLayout1.getMeasuredHeight()-Utils.getNavigationBarHeight(context);
        close_state();
    }
    
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        measureChildren(widthMeasureSpec, heightMeasureSpec);
    }
    
    private void open_state(int subjoin){
        for(int i=0;i<getChildCount();i++){
            View childview = getChildAt(i);
            if(i==0){
                childview.layout(0,0,getMeasuredWidth(),value-getChildAt(1).getMeasuredHeight()-subjoin);
            } else{
                childview.layout(0,value-childview.getMeasuredHeight()-subjoin,getMeasuredWidth(),value-subjoin);
            }
        }
    }
    
    private void close_state(){
        for(int i=0;i<getChildCount();i++){
            View childview = getChildAt(i);
            if(i==0){
                childview.layout(0,0,getMeasuredWidth(),value);
            } else{
                childview.layout(0,value,getMeasuredWidth(),value+getMeasuredHeight());
            }
        }
    }
    

    }

    
    这里我们是怎么把bottom_layout.xml布局添加到我们自定义控件的呢,如果你看过LayoutInflater这块的源码就不用我多说了,如果你不了解我现在给你总结下:
    
    *inflater.inflate(R.layout.bottom_layout,this,true);*
    
    > 如果root为null或者attachToRoot为false时,则调用layout.xml中的根布局的属性并且将其作为一个View对象返回。
    > 如果root不为null,但attachToRoot为false时,则先将layout.xml中的根布局转换为一个View对象,再调用传进来的root的布局属性设置给这个View,然后将它返回。
    > 如果root不为null,且attachToRoot为true时,则先将layout.xml中的根布局转换为一个View对象,再将它add给root,最终再把root返回出去。(两个参数的inflate如果root不为null也是相当于这种情况)
    
    [Android LayoutInflater.inflate各个参数作用](https://www.jianshu.com/p/3f871d95489c)
    
    那么我们就把一个小横线固定的放进来了我们的自定义控件里面,由于我们用的是ViewGroup这就相当于一个Framlayout帧布局,随意摆放,随意叠加。我们把小横线的宽高设置为默认,定位我们设置为 childview.layout(0,0,getMeasuredWidth(),value); 全屏这样小横线默认就在底部。
    后面添加进来的组件我们让它出现在屏幕下面,就实现了不可见状态,如果需要可见,则我们把组件整体向上移动:
    

    private void open_state(int subjoin){
    for(int i=0;i<getChildCount();i++){
    View childview = getChildAt(i);
    if(i==0){
    childview.layout(0,0,getMeasuredWidth(),value-getChildAt(1).getMeasuredHeight()-subjoin);
    } else{
    childview.layout(0,value-childview.getMeasuredHeight()-subjoin,getMeasuredWidth(),value-subjoin);
    }
    }
    }

    
    这里需要传进来一个参数,subjoin 这个参数是为了当软键盘出来的时候我们把整个弹窗口往上挤。默认就设置为0,然后监听键盘的弹出以及关闭设置subjoin大小。subjoin大小就设置为键盘的高度:
    

    //这里是一个封装回调
    //封成了一个监听类,在Util中可以直接去调用
    private KeyBoardHelper.OnKeyBoardStatusChangeListener onKeyBoardStatusChangeListener = new KeyBoardHelper.OnKeyBoardStatusChangeListener() {
    @Override
    public void OnKeyBoardPop(int keyBoardheight) {
    open_state(keyBoardheight);
    }
    @Override
    public void OnKeyBoardClose(int oldKeyBoardheight) {
    open_state(0);
    }
    };

    
    这里我们的底部弹出框就简单介绍完毕了。
    
    *后面有空我们再来仔细说受View以及ViewGroup的实现和View的分发机制原理啊。*
    
    
    
    展开全文
  • Android_Demo

    2011-04-19 16:46:00
    2:android控件美化 3:任务管理器 4:AIDL 5:ExpandList 6:ImageViewMove 7:SurfaceView 8:泡泡特效 9:输入法 10:心跳震动 11:重力感应 12:数据库操作 13:sqlite存储图片 14:带输入框的dialog 15: ListView异步...

    Android_Demo

    文章分类:移动开发
    1:ListView异步加载网络图片
    2:android控件美化
    3:任务管理器
    4:AIDL
    5:ExpandList
    6:ImageViewMove
    7:SurfaceView
    8:泡泡特效
    9:输入法
    10:心跳震动
    11:重力感应
    12:数据库操作
    13:sqlite存储图片
    14:带输入框的dialog
    15: ListView异步加载网络图片Better版本
    16:用Java concurrent编写异步加载图片功能
    17:自定义按钮实现
    18:android语音朗读
    19:ListView带标题头
    20:仿UCWEB界面源码
    21:ListView分页
    22:ListView分隔布局(带图片+页首和页脚+Spinner)
    23:android模拟的菜单
    24:自定义EditText控件,文字有下划线
    25:自定义的菜单布局
    26:TabHost底部布局显示
    27:Android自定义图文并茂的Button
    28:视频播放器
    29:我的TABHOST布局
    30:倒计时
    31:在线字典
    32:我的任务管理器
    33:Gallery
    34:button实现tab
    35:联系人管理
    36:中文天气预报程序
    37:可以拖动进度的视频播放
    38:Gallery画廊
    39:翻书效果
    40:ListView滚动翻屏(类似google Market)
    41:listview+checkbox点击整行,多选框选中
    42:解析JSON
    43:treeview
    44:ListView实现类似Gallery的功能
    45:android画笔
    46:竖直的seekbar

    转载于:https://www.cnblogs.com/moonvan/archive/2011/04/19/2021274.html

    展开全文
  • Android:定制Activity的标题栏(Titlebar)

    千次阅读 2011-08-16 11:58:39
    缺省的情况下,通常见到Activity的标题栏(Titlebar)是这样的(红色框内): HandleContacts是Activity的标题。 ...有时候,我们希望能...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的
  • 本次考试要求支持不同用户登录,且每个用户有自己独立的内容,各个用户之间数据独立。 2、日记搜索部分,原程序只支持时间段搜索。...6、美化部分,在诸如登录界面,日记显示界面等部分,对显示内容进行美化
  • 缺省的情况下,通常见到...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。1.首先如下创建一个Android项目 2.将图片magnifier....
  • 缺省的情况下,通常见到...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。 1.首先如下创建一个Android项目 2.将图片m...
  • 缺省的情况下,通常见到Activity的标题栏...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。 1.首先如下创建一个Android项目 ...
  • 1. 第一步 新建文件(相信各位码农一定会这一步)略。。。 ...登录界面主要包括几大控件,如...界面设计可以线性布局嵌套使用,这样可以很好的对控件调整,美化界面。 注册界面主要包括EdiText、Radio button、button、...
  • Android开发如何在4.0及...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个自定义TitleBar的实际例子。 AD: 本文将通过一个实例讲解怎么实现
  • 缺省的情况下,通常见到...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。 1.首先如下创建一个Android项目 2.将图片magnifi...
  • 最近在使用WebView做UI,UI交给做网页的来写,的却省事,重要的是美化效果还不错,这里就不多说了  今天要做一个日期选择界面,刚刚开始我想:既然是用HTML写的UI,写上JS代码,实现日历选择那就行了。但是做出来...
  • 这里我们会用Vue来实现一个日期选择器,效果如下: 实现功能:日期选择弹出层选择天面板选择月面版选择年面版支持用户输入CSS样式美化组件的使用方式很简单,只需要传入对应的日期对象value即可:<下面就开始一...
  • 缺省的情况下,通常见到Activity...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。 1.首先如下创建一个Android项目   2
  • 缺省的情况下,通常见到Activity的...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。   1. 首先如下创建一个Android项目   2.
  • 缺省的情况下,通常见到Activity的...比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。   1. 首先如下创建一个Android项目   2.
  • Android效果 侧滑菜单 首页 合并列表 左右菜单 左右滑动列表 登录注册 搜索 分享 :beers:你能学到 BottomNavigationBar 底部菜单 FlutterJsonBeanFactory Json解析 WebView 加载网页...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

android输入框美化