zoukankan      html  css  js  c++  java
  • Android自定义用户控件简单范例(一)

    一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果。而原生态的Android控件为开发人员提供的是最基本的积木元素,如果要准确地传递统一的视觉效果和交互体验,对控件的自定义使用是非常有必要的。

    Android开发也采用前端xml+后端Java的形式进行页面开发,写过C#的人应该知道,xml是一种界面元素布局的直观显示,根据标签自动完成编译显示给用户,无需运行时才能看到界面,这样的分离能减小代码的耦合并且方便调试。但本质上去除xml布局文件,依然是可以完成所有的程序设计。这篇文章通过一个简单的完全从Java后台程序中进行创建的示例来说明Android自定义控件的运行原理。

    下面是一个简单的自定义控件,继承LinearLayout,加一个居中的ImageView和TextView。

        private void initView(Context context){
            setOrientation(VERTICAL);
            // 定义布局填充形式,该布局的宽和高均根据内容自适应调整
            ViewGroup.LayoutParams wrap_wrapParams = new LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
            setLayoutParams(wrap_wrapParams);
            setGravity(Gravity.CENTER);
            
            LinearLayout.LayoutParams params = new LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            params.gravity = Gravity.CENTER;
            
            imageView = new ImageView(context);
            imageView.setId(10001);
            
            textView = new TextView(context);
            textView.setId(10002);
            
            addView(imageView, params);
            addView(textView, params);
        } 
        
        /*设置显示文字*/
        public void setTextViewText(String text){
            textView.setText(text);
        }

    如果要用xml进行描述如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical" >
        
        <!-- Display a button -->
        <ImageView
            android:id="@+id/icon_part"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />
            <!-- android:src="@drawable/ic_action_share" -->
    
        <TextView
            android:id="@+id/text_part"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"/>
    </LinearLayout>
    View Code

    调用的时候直接:

  • 相关阅读:
    TCP发送数据分包的问题
    利尔达NT90无法烧录固件的问题
    position:fixed 相对于父元素定位
    PHP上传图片到阿里云OSS(图片文件或base64数据)
    python动态加载类并调用
    python 图片验证码识别
    解决python logging 中文乱码问题
    系统中断,电脑卡顿的解决办法
    清理WSL2的磁盘占用
    jqGrid--设置单元格字体颜色
  • 原文地址:https://www.cnblogs.com/yxy8023ustc/p/3849999.html
Copyright © 2011-2022 走看看