精华内容
下载资源
问答
  • 动态创建
    千次阅读
    2021-09-03 10:02:07

    Mybatis动态创建数据库表

    描述

    ​ 最近实验室的项目中有的需求涉及到需要动态创建数据库表,因此我做了一个小实验,可以通过mybatis中的动态SQL去实现动态创建或删除数据库。在正文之前先介绍一下mybatis的映射配置文件中动态传递参数的两种方式:

    • #{} 占位符 对应的变量会自动加上引号
    • ${} 拼接符 对应的变量不会自动加上引号

    因此在我们动态创建数据库表进行传参的时候一定要注意,我们传递的表名或者列名一定要使用${}进行传参。

    基本的创建删除表

    <update id="createNewTable" parameterType="String">
        CREATE TABLE ${tableName} (
          id bigint(20) NOT NULL AUTO_INCREMENT,
          ${name1} bigint(20) NOT NULL,
          ${name2} double NOT NULL,
          PRIMARY KEY (id))
    </update>
    
    
    <select id="existTable" parameterType="String" resultType="Integer">
        select count(*)
        from information_schema.TABLES
        where LCASE(table_name)=#{tableName}
    </select>
    
    <update id="dropTable">
        DROP TABLE IF EXISTS ${tableName}
    </update>
    

    在写mapper映射接口的时候要使用@Param传参

    void createNewTable(@Param("tableName") String tableName,
                        @Param("name1")String name1,
                        @Param("name2")String name2);
    
    Integer existTable(String tableName);
    
    void dropTable(@Param("tableName")String tableName);
    

    使用List传参动态传入列名

    这里需要简单介绍一下mybatis中foreach的使用

    foreach元素的属性主要有item,index,collection,open,separator,close。

    • item:表示集合中每一个元素进行迭代时的别名
    • index:指 定一个名字,用于表示在迭代过程中,每次迭代到的位置
    • open:表示该语句以什么开始
    • separator:表示在每次进行迭代之间以什么符号作为分隔符
    • close:表示以什么结束

    在使用foreach的时候最关键的也是最容易出错的就是collection属性,这个属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:

    • 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
    • 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
    • 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.

    因此在动态创建数据库表的时候我们也可以使用这种方式传参

    <update id="createTableByList">
        CREATE TABLE ${tableName} (
        id bigint(20) NOT NULL AUTO_INCREMENT,
            <foreach collection="rowList" item="rowName" index="index">
                ${rowName} varchar(255) NOT NULL,
            </foreach>
          PRIMARY KEY (id))
    </update>
    

    对应的接口

    void createTableByList(@Param("tableName")String tableName,@Param("rowList") List<String> rowList);
    

    一样不要忘了@Param

    更多相关内容
  • qt 动态创建控件

    热门讨论 2014-06-06 13:30:11
    简介:根据选择的栏目 和每行要显示的控件数,创建控件
  • MFC 动态创建按钮示例

    热门讨论 2012-08-26 19:21:27
    通常我们都是使用MFC的资源视图在对话框或FormView上通过拖拽的方式添加按钮,这里我们利用CButton对象来动态创建按钮,并对按钮添加单击消息响应。如果你有任何疑问,欢迎和我讨论。
  • QML 中如何动态创建组件

    千次阅读 多人点赞 2020-04-08 14:54:04
    本章节博主就整理了几种在 QML 中动态创建组件的方法。 方法一:Model + View 首先需要定义好 view 和 model,当我们获取到一组新的数据需要在界面上显示的时候,可以通过在model中添加数据的方式,在view中动态显示...

    作者:billy
    版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

    前言

    在使用 Qt Quick 开发的过程中,有时我们会遇到这样的需求,界面窗口显示出来后,某些 Item 并不存在,当发生了鼠标点击或者某种事件触发之后,才会去创建这些Item并显示出来,这就是我们经常说的动态创建组件。本章节博主就整理了几种在 QML 中动态创建组件的方法。

    方法一:Model + View

    首先需要定义好 view 和 model,当我们获取到一组新的数据需要在界面上显示的时候,可以通过在model中添加数据的方式,在view中动态显示。

    示例:

    import QtQuick 2.12
    import QtQuick.Window 2.12
    
    Window {
        visible: true
        width: 640
        height: 480
    
        ListView {
            id: view
            width: parent.width
            height: 300
            clip: true
            focus: true
    
            model: ListModel {
                id: model
    
                ListElement { name: "Apple"; cost: 2.45 }
            }
    
            delegate: Component {
                Item {
                    width: 180; height: 40
                    Column {
                        anchors.verticalCenter: parent.verticalCenter
                        Text { text: '<b>Name:</b> ' + name }
                        Text { text: '<b>Number:</b> ' + cost }
                    }
                }
            }
    
            highlight: Rectangle {
                color: "lightsteelblue"
                radius: 5
            }
    
            add: Transition {
                NumberAnimation { properties: "x,y"; from: 100; duration: 1000 }
            }
        }
    
        Rectangle {
            width: 120
            height: 80
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 50
            anchors.horizontalCenter: parent.horizontalCenter
            color: "yellow"
    
            Text {
                anchors.centerIn: parent
                font.pixelSize: 28
                font.family: "微软雅黑"
                color: "black"
                text: qsTr("add")
            }
    
            MouseArea {
                anchors.fill: parent
                onClicked: {
                    addItemToListView("banana", 5)
                    addItemToListView("orange", 3.6)
                    addItemToListView("pear", 1.8)
                    addItemToListView("watermelon", 8.5)
                }
            }
        }
    
        function addItemToListView(name, cost)
        {
            model.append({ "name":name, "cost":cost })
        }
    }
    

    在这里插入图片描述

    方法二:Loader + Component

    MyItem1.qml
    
    import QtQuick 2.0
    
    Rectangle {
        width: 640
        height: 300
        color: "yellow"
    
        Text {
            anchors.centerIn: parent
            font.pixelSize: 48
            font.family: "微软雅黑"
            text: "I am yellow !"
            color: "black"
        }
    }
    
    MyItem2.qml
    
    import QtQuick 2.0
    
    Rectangle {
        width: 640
        height: 300
        color: "red"
    
        Text {
            anchors.centerIn: parent
            font.pixelSize: 48
            font.family: "微软雅黑"
            text: "I am red !"
            color: "black"
        }
    }
    
    import QtQuick 2.12
    import QtQuick.Window 2.12
    import QtQuick.Controls 2.5
    
    Window {
        visible: true
        width: 640
        height: 480
    
        property bool jud: true
        property int count: 0
    
        Loader {
            id: loader
            anchors.top: parent.top
            anchors.left: parent.left
            asynchronous: false // 异步加载,默认false
        }
    
        Text {
            id: text
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 100
            font.pixelSize: 24
            font.family: "微软雅黑"
            color: "black"
            text: JSON.stringify(count)
        }
    
        Button {
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 40
            text: "load"
            onClicked: {
                timer1.start()
                timer2.start()
            }
        }
    
        Timer {
            id: timer1
            interval: 10
            repeat: true
            onTriggered: {
                count++
            }
        }
    
        Timer {
            id: timer2
            interval: 10
            repeat: true
            onTriggered: {
                if (jud) {
                    loader.source = "MyItem1.qml"
                } else {
                    loader.source = "MyItem2.qml"
                }
    
                jud = !jud
            }
        }
    }
    

    在这里插入图片描述
    这里说明一下,Loader 使用同步加载的方式在这个 Demo 中其实是不会卡顿的,Item 切换非常流畅,上图gif中出现卡顿是因为录制GIF的工具帧数没有跟上。。。也是有点无语。小伙伴们可以自己跑一下程序看一下效果。

    Loader 的 asynchronous 属性代表是否异步加载,默认是false。当与源属性一起使用时,加载和编译也将在后台线程中执行。异步加载会跨多个帧创建组件声明的对象,并减少动画中出现故障的可能性

    异步加载时,状态将更改为Loader.loading。创建整个组件后,该项将可用,状态将更改为Loader.Ready。在进行异步加载时将此属性的值更改为false将强制立即同步完成。这允许在异步加载完成之前必须访问加载程序内容时,开始异步加载,然后强制完成。

    方法三:createObject / createQmlObject

    MyItem.qml
    
    import QtQuick 2.0
    import QtQuick.Controls 2.5
    
    Rectangle {
        id: rec
    
        property alias textInformation : myText.text
        signal destroyMyself(var object)
    
        Text {
            id: myText
            anchors.left: parent.left
            anchors.leftMargin: 10
            anchors.verticalCenter: parent.verticalCenter
            font.pixelSize: 24
            font.family: "微软雅黑"
            color: "black"
        }
    
        Button {
            anchors.right: parent.right
            anchors.rightMargin: 10
            anchors.verticalCenter: parent.verticalCenter
            text: "delete"
    
            onClicked: {
                destroyMyself(rec)
            }
        }
    }
    
    main.qml
    
    import QtQuick 2.12
    import QtQuick.Window 2.12
    import QtQuick.Controls 2.5
    
    Window {
        visible: true
        width: 1024
        height: 768
    
        Column {
            id: column
            anchors.top: parent.top
            anchors.left: parent.left
            width: parent.width
            height: 700
            spacing: 5
        }
    
        Button {
            id: createObjectBtn
            anchors.left: parent.left
            anchors.bottom: parent.bottom
            anchors.leftMargin: 120
            anchors.bottomMargin: 50
            text: "createObject"
            onClicked: {
                createObject()
            }
        }
    
        Button {
            id: createQmlObjectBtn
            anchors.right: parent.right
            anchors.bottom: parent.bottom
            anchors.rightMargin: 120
            anchors.bottomMargin: 50
            text: "createQmlObject"
            onClicked: {
                createQmlObject()
            }
        }
    
        Component {
            id: myComponent
    
            Rectangle {
                id: rec
    
                property alias textInformation : myText.text
                signal destroyMyself(var object)
    
                Text {
                    id: myText
                    anchors.left: parent.left
                    anchors.leftMargin: 10
                    anchors.verticalCenter: parent.verticalCenter
                    font.pixelSize: 24
                    font.family: "微软雅黑"
                    color: "black"
                }
    
                Button {
                    anchors.right: parent.right
                    anchors.rightMargin: 10
                    anchors.verticalCenter: parent.verticalCenter
                    text: "delete"
    
                    onClicked: {
                        destroyMyself(rec)
                    }
                }
            }
        }
    
        function componentDestroy(object) {
            object.destroy()
        }
    
        function createObject() {
            // createComponent from external file "MyItem.qml"
            var component = Qt.createComponent("MyItem.qml")
            if (component.status === Component.Ready) {
                var obj = component.createObject(column, { "color": "yellow",
                                                           "width": column.width,
                                                           "height": 50,
                                                           "textInformation": 'createComponent from external file "MyItem.qml"' })
                obj.destroyMyself.connect(componentDestroy)
            }
    
            // createComponent from internal file myComponent
            var obj2 = myComponent.createObject(column, { "color": "red",
                                                          "width": column.width,
                                                          "height": 50,
                                                          "textInformation": "createComponent from internal file myComponent" })
            obj2.destroyMyself.connect(componentDestroy)
        }
    
        function createQmlObject() {
            var newObject = Qt.createQmlObject('import QtQuick 2.0; Rectangle {color: "blue"; width: 1024; height: 50}',
                                               column,
                                               "");
        }
    }
    

    在这里插入图片描述

    1. object createQmlObject(qml, object parent, string filepath)
      返回从给定的qml字符串创建的具有指定父级的新对象,如果创建对象时出错,则返回null。 如果指定了filepath,它将用于为创建的对象报告错误。
      查看示例的代码可以发现,通过 createQmlObject 动态创建不是很方便,因为如果组件的样式或功能比较多的话,qml字符串就会很长很繁琐。

    2. object createObject(parent, object properties)
      可以在文件中或者在外部把组件定义好,如果是外部定义的需要先通过 createComponent 创建组件,然后再通过 createObject 创建此组件的对象实例

    展开全文
  • MFC 动态创建

    热门讨论 2013-11-28 19:34:19
    纯正的封装,算是彻底实现MFC程序的界面动态配置,是实现界面和功能的分离的基础
  • 动态创建iframe页面内容

    千次阅读 2020-04-13 18:30:00
    <!DOCTYPE html> <... <head> ...动态创建iframe页面内容</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta http-equiv="content-type" co...

    版本一:通过文本域内容创建iframe页面

    <!DOCTYPE html>
    <html>
    <head>
        <title>创建iframe页面</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    </head>
    <body>
    <textarea rows="10" cols="50" placeholder="请输入HTML内容"></textarea>
    <br>
    <button type="button">创建iframe页面</button>  
    <br><br><br>
    <script>
    	const textarea = document.querySelector('textarea');
    	const btn = document.querySelector('button');
    	let iframe, frameWin, frameDoc, frameBody;
    	btn.addEventListener('click', function(){
    		if (!iframe) {
    			iframe = document.createElement('iframe');
    			document.body.appendChild(iframe);
    			iframe.style.cssText = 'width: 400px; height: 200px;';
    			iframe.onload = function() {
    				frameWin = document.querySelector('iframe').contentWindow;
    				frameDoc = frameWin.document;
    				frameBody = frameDoc.body;
    				frameBody.innerHTML = textarea.value;
    			}
    		} else {
    			frameBody.innerHTML = textarea.value;
    		}
    	});
    </script>
    </body>
    </html>
    

    在这里插入图片描述

    版本二:创建iframe图表页面

    <!DOCTYPE html>
    <html>
    <head>
        <title>创建iframe页面</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    </head>
    <body>
    <button type="button">创建iframe页面</button>  
    <br><br>
    <script src="https://cdn.bootcss.com/echarts/3.2.3/echarts.min.js"></script>
    <script>
    	const textarea = document.querySelector('textarea');
    	const btn = document.querySelector('button');
    	let iframe, frameWin, frameDoc, frameBody;
    	btn.addEventListener('click', function(){
    		if (!iframe) {
    			iframe = document.createElement('iframe');
    			iframe.style.cssText = 'width: 400px; height: 300px;';
    			iframe.onload = function() {
    				frameWin = document.querySelector('iframe').contentWindow;
    				frameDoc = frameWin.document;
    				frameBody = frameDoc.body;
    				let div = createDiv();
    				frameBody.appendChild(div);
    				createChart(div);
    			}
    			document.body.appendChild(iframe); //需要放在iframe的onload事件之后
    		} 
    	});
    	
    	// 创建div容器
    	function createDiv() {
    		let div = document.createElement('div');;
    		div = document.createElement('div');
    		div.style.cssText = 'width: 100%; height: 100%; background-color: gray';
    		return div;
    	}
    	
    	// 创建图表
    	function createChart(div) {
    	
    		const myChart = echarts.init(div);
    
    		// 指定图表的配置项和数据
    		const option = {
    			title: {
    			  text: '未来一周气温变化'         
    			},
    			tooltip: {},
    			legend: {},
    			toolbox: {},      
    			xAxis: [{         
    			  data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    			}],
    			yAxis: { },
    			series: [{
    			  name: '最高气温',
    			  type: 'line',
    			  data: [11, 11, 15, 13, 12, 13, 10]          
    			},
    			{
    			  name: '最低气温',
    			  type: 'line',
    			  data: [1, -2, 2, 5, 3, 2, 0]        
    			}]
    		};
    
    		// 使用配置项和数据显示图表。
    		myChart.setOption(option);
    	}
    </script>
    

    在这里插入图片描述

    版本三:两种混在一起

    <!DOCTYPE html>
    <html>
    <head>
        <title>动态创建iframe页面内容</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    </head>
    <body>
    <textarea rows="10" cols="50" placeholder="请输入HTML内容"></textarea>
    <br>
    <button id="createHTMLBtn" type="button">创建iframe文本域内容页面</button>  
    <br><br>
    <button id="createChartBtn" type="button">创建iframe图表页面</button>  
    <br><br><br>
    <script src="https://cdn.bootcss.com/echarts/3.2.3/echarts.min.js"></script>
    <script>
    	const textarea = document.querySelector('textarea');
    	const createHTMLBtn = document.querySelector('#createHTMLBtn');
    	const createChartBtn = document.querySelector('#createChartBtn');
    	
    	//点击按钮创建iframe标签
    	function createIframe(fn){
    		let iframe = document.querySelector('iframe');
    		
    		if (iframe) {
    			let frameWin = document.querySelector('iframe').contentWindow;
    			let frameDoc = frameWin.document;
    			let frameBody = frameDoc.body;
    			fn && fn(iframe,frameBody,frameDoc,frameWin);
    		} else {
    			iframe = document.createElement('iframe');	
    			iframe.style.cssText = 'width: 400px; height: 300px;';
    			iframe.onload = function() {
    				let frameWin = document.querySelector('iframe').contentWindow;
    				let frameDoc = frameWin.document;
    				let frameBody = frameDoc.body;
    				fn && fn(iframe,frameBody,frameDoc,frameWin);
    			}
    			document.body.appendChild(iframe);
    		} 
    	};
    	
    
    	
    	//点击按钮创建html内容
    	createHTMLBtn.addEventListener('click', function(){
    		
    		createIframe(function(iframe,frameBody){
    		debugger;
    			frameBody.innerHTML = textarea.value;
    		})
    	});
    	
    	//点击按钮创建图表内容
    	createChartBtn.addEventListener('click', function(){
    	
    		createIframe(function(iframe,frameBody){
    			createDiv(frameBody, function(div){
    				createChart(div);
    			});			
    		})				
    	});
    	
    	
    	// 创建div容器
    	function createDiv(frameBody, fn) {
    		let div = document.querySelector('div');
    		if (!div) {
    			div = document.createElement('div');
    			div.style.cssText = 'width: 100%; height: 100%; background-color: gray';
    			frameBody.innerHTML = '';
    			frameBody.appendChild(div);
    		}
    		fn && fn(div);
    	}
    	
    	// 创建图表
    	function createChart(div) {
    	
    		const myChart = echarts.init(div);
    
    		// 指定图表的配置项和数据
    		const option = {
    			title: {
    			  text: '未来一周气温变化'         
    			},
    			tooltip: {},
    			legend: {},
    			toolbox: {},      
    			xAxis: [{         
    			  data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    			}],
    			yAxis: { },
    			series: [{
    			  name: '最高气温',
    			  type: 'line',
    			  data: [11, 11, 15, 13, 12, 13, 10]          
    			},
    			{
    			  name: '最低气温',
    			  type: 'line',
    			  data: [1, -2, 2, 5, 3, 2, 0]        
    			}]
    		};
    
    		// 使用配置项和数据显示图表。
    		myChart.setOption(option);
    	}
    </script>
    </body>
    </html>
    

    在这里插入图片描述

    展开全文
  • android 动态创建View

    千次阅读 2018-08-08 13:55:58
    根据需求,有的时候需要进行动态创建布局,也就是xml中的布局需要通过addView()的形式动态的进行创建。如下图: 图中红色部分:如果在xml中,应该是这样的 &lt;LinearLayout android:id="@+id/ll_...

    根据需求,有的时候需要进行动态创建布局,也就是xml中的布局需要通过addView()的形式动态的进行创建。如下图:

    这里写图片描述

    图中红色部分:如果在xml中,应该是这样的

    <LinearLayout
                    android:id="@+id/ll_facility_info_create"
                    android:layout_width="match_parent"
                    android:padding="20dp"
                    android:orientation="vertical"
                    android:background="@color/calendar_color_white"
                    android:layout_height="wrap_content">
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="40dp"
                        android:text="设施服务"
                        android:textColor="#000000"
                        android:gravity="center_vertical"
                        android:textSize="@dimen/font20"/>
    
                    <!--动态创建-->
                    <LinearLayout
                        android:orientation="vertical"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">
                        <TextView
                            android:layout_width="match_parent"
                            android:layout_height="30dp"
                            android:text="网络"
                            android:textColor="#000000"
                            android:gravity="center_vertical"/>
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:orientation="horizontal"
                            android:layout_height="30dp">
                            <TextView
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:gravity="center_vertical"
                                android:text="wifi免费"
                                />
                            <TextView
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:gravity="center_vertical"
                                android:text="wifi免费"
                                />
                            <TextView
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:gravity="center_vertical"
                                android:text="wifi免费"
                                />
    
                        </LinearLayout>
    
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:orientation="horizontal"
                            android:layout_height="30dp">
                            <TextView
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:gravity="center_vertical"
                                android:text="wifi免费"
                                />
                            <TextView
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:visibility="invisible"
                                android:gravity="center_vertical"
                                android:text="wifi免费"
                                />
                            <TextView
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:visibility="invisible"
                                android:gravity="center_vertical"
                                android:text="wifi免费"
                                />
    
                        </LinearLayout>
                    </LinearLayout>
    
                </LinearLayout>

    而java代码:

    //    动态添加设施服务
        private View addFacilityLayout(){
    //        初始化布局参数
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    //        创建最外层的LinearLayout
            LinearLayout linearLayout = new LinearLayout(this);
    //        设置布局参数
            linearLayout.setLayoutParams(layoutParams);
    //        设置子View的Linearlayout
            linearLayout.setOrientation(LinearLayout.VERTICAL);
    
    //        第一个子View  TextView
    //        设置子View的布局
            LinearLayout.LayoutParams viewLayoutParams1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                    DensityUtils.dip2px(context,30));
    //        创建子View TextView
            TextView textView = new TextView(this);
    //        设置内容的位置
            textView.setGravity(Gravity.CENTER_VERTICAL);
    //        设置字体颜色
            textView.setTextColor(Color.BLACK);
    
            textView.setText("网络");
    //        设置布局参数
            textView.setLayoutParams(viewLayoutParams1);
    //        将第一子View添加到最外层的linearlayout中
            linearLayout.addView(textView);
    
            for (int i = 0; i < 2; i++) {
                //        第二个子View  LinearLayout
                LinearLayout.LayoutParams viewLayoutParams2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        DensityUtils.dip2px(context,30));
    
                LinearLayout linearLayout1 = new LinearLayout(this);
    
                linearLayout1.setLayoutParams(viewLayoutParams2);
    //        设置子View的Linearlayout
                linearLayout1.setOrientation(LinearLayout.HORIZONTAL);
    
                //        第二个子View  LinearLayout中的TextView
                for (int j = 0; j < 3; j++) {
    //          设置子View的布局
                    LinearLayout.LayoutParams vp1 = new LinearLayout.LayoutParams(0,DensityUtils.dip2px(context,30),1.0f);
    //        创建子View TextView
                    TextView tv1 = new TextView(this);
    //        设置内容的位置
                    tv1.setGravity(Gravity.CENTER_VERTICAL);
    //        设置布局参数
                    tv1.setLayoutParams(vp1);
                    //        设置字体颜色
                    tv1.setText("wifi网络");
    //                添加子view
                    linearLayout1.addView(tv1);
                }
    //            添加子View
                linearLayout.addView(linearLayout1);
            }
            return linearLayout;
        }

    调用:

     LinearLayout ll_facility_info_create = findViewById(R.id.ll_facility_info_create);
     ll_facility_info_create.addView(addFacilityLayout());
    展开全文
  • 使用video.js动态创建视频标签

    千次阅读 2021-06-13 12:18:33
    我目前使用video.js处理来自html5视频的闪回回退。当用户点击我网站上的缩略图时,我动态地(使用...以下是相关代码:使用video.js动态创建视频标签//setup jquery ui dialog window$("div#video_box").dialog({auto...
  • 动态创建DOM元素的三种方式

    千次阅读 2019-09-12 17:02:04
    动态创建DOM元素的三种方式 document.write(); 不常用,因为容易覆盖原来的页面。 innerHTML = (); 用的比较多。绑定属性和内容比较方便。(节点套节点) document.createElement(); 用得也比较多,指定数量的...
  • Qt Qml 中动态创建 & 销毁视频容器技巧(二) 1、写在前面 上一篇我们已经掌握了 Qml 中动态创建 & 销毁组件的技巧。 现在, 我们要利用这个技巧来动态创建视频容器。 先来看看效果图 (来自 SkeyeARS ) : ...
  • ​在Spring启动时,利用Spring Bean管理工厂BeanFactory接口,实现动态创建交换机、队列、交换机和队列的绑定关系,让我们无需进行重复的编码工作。 源码解析 spring动态注入bean /** * 将bean对象注册到bean工厂 ...
  • golang struct 动态创建

    千次阅读 2021-02-09 17:11:44
    示例如下: package main import ( "fmt" "reflect" ) var typeRegistry = make(map[string]reflect.Type) ...func registerType(elem interface{}) { t := reflect.TypeOf(elem).Elem() ...func newStruct(name ...
  • 动态监听和队列的使用场景主要是项目不确定队列的名称等信息,根据业务队列变化,或者在大量数据处理的创景中一个或者几个队列处理不过来,需要随着数据增加消费者队列也要动态增长 下面是简单使用: ...
  • 创建QT对话框工程,动态创建多个按钮,把动态创建的按钮存放在QList中,并关联同一个信号槽函数,在该槽函数中根据按钮对象名称各自进行其他事项处理。 在mainwindow.h文件添加 #ifndef MAINWINDOW_H #define ...
  • unity 动态创建Animation --Animationclip

    千次阅读 2022-03-11 16:00:07
    亲测可用 代码动态创建动画 注意:wrapMode的设置 clip.legacy设置true或者false 对于整体影响没有测试。(自行判断) 用来高速创建动画的工具方法 private AnimationClip CreateClip(GameObject target, ...
  • 在QML中想要动态创建组件,一般有两种方法: 1、使用Loader。 2、使用JavaScript:Qt.createComponent() / Qt.createQmlObject()。 当然,这里不仅会介绍他们的一般用法,还有如何使用它们来进行同步/异步的创建...
  • React动态创建绑定多个ref

    千次阅读 2022-03-23 18:37:16
    // React动态创建ref const [refArr, setRefArr] = useState<React.RefObject<HTMLDivElement>[]>([]); const dataList = [1, 2, 3, 4, 5]; // 创建一个新的数组来存储ref const arr: React.Ref...
  • 动态创建script标签动态创建script标签的优点以及注意事项在动态引入js文件后,可直接调用里面的方法执行执行后出现的问题解决方式:方法一:非ie方法 script.onload = function(){},触发 script.onload事件就代表...
  • vue3动态创建组件

    千次阅读 2020-12-23 15:11:09
    <template> <div class="b"> <cmp :html="data" @handleChange="handleChange"></cmp> </div> <...import Vue from 'vue/dist/vue.common.js'//注意引用方式 ... .
  • Unity动态创建物体方法

    千次阅读 2020-08-20 10:31:22
    //第一种创建物体的方式 new GameObject(); GameObject go= new GameObject(“Cube”);//第一个参数是创建物体的名字(可填可不填) //第二种创建物体的方式(克隆) //根据prefab或者另外一个游戏物体进行克隆
  • JS动态创建input

    千次阅读 2020-06-29 15:20:41
    <!DOCTYPE html> <html> <head> <title>HAOHAO</title> <style type="text/css">...input type="button" name="add_input" value="增加" onclick="addInput();
  • SkeyeWebPlayer.js H5播放器是由成都视开信息科技开发和维护的一个完善的...上一节加到编译flvjs播放器,实现基础的播放器功能,本节将实现自定义动态创建video标签渲染。如下图: 首先为了方便开发,需要将项目的目
  • SpringCloud2 动态创建FeignClient

    千次阅读 2020-07-24 16:10:58
    SpringBoot动态创建FeignClient,根据Eureka服务名调用服务
  • vue3.x 动态创建组件

    千次阅读 2020-12-11 13:57:05
    import {createApp, onUnmounted} from "vue" import MinDialg from "../views/minDialog.vue" const createMinDialog=()=... 方法肯定还是有问题, 只能创建dialog ,回头我们继续推荐,不着急 是不是很简单,大家试试
  • Typescript如何动态创建类?

    千次阅读 2020-01-08 13:47:31
    如何动态创建Typescript类?前言思路图代码User 如何动态的创建class (调用示例)ProxyClass 实现一个代理类(具体实现)Storage 实现不同的class存放(具体实现)注意 前言 想做一个工厂模式,之前写JAVA的时候...
  • RabbitMQ中动态创建队列和监听

    万次阅读 2019-11-28 09:19:53
    因为存在上面所说的问题,所以研究了下Rabbitmq中动态生成队列和动态创建监听的方法,并且实现了个demo,保存下记忆。 项目目录结构如下: 1.开发环境 jdk 8 ; idea; rabbitmq 3.7.16; 2. ...
  • qml动态创建组件对象

    千次阅读 2018-03-06 15:56:53
    qml动态创建组件对象,使用分离js文件,动态销毁对象,属性别名等。 代码: main.cpp #include &lt;QGuiApplication&gt; #include &lt;QQuickView&gt; int main(int argc, char *argv[]) { ...
  • vue动态创建组件的方法解析

    千次阅读 2020-08-11 10:02:47
    kk.vue hello action closeTap kk 组件非常简单 一个文字一个按钮 main.js 以上我们可以发现,我们可以动态创建组件(VNode )动态的销毁! 是不是很牛叉! 以后我们写个全局的弹框啥的,不是很easy!!
  • spring 动态创建bean

    千次阅读 2019-04-12 16:17:00
    用途:在RPC创建动态bean的时候,可以在此处动态创建实例化代理类的方法.可以自定义注解,来使用动态创建代理接口的bean. @Component public class MyAnnotationAddBeanFactory implements BeanFactoryPostProcessor...
  • // 自动,动态创建 form表单 function getUrl(URL, PARAMS) { var temp = document.createElement(&quot;form&quot;); temp.action = URL; temp.method = &quot;post&quot;; temp.style....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,871,150
精华内容 748,460
关键字:

动态创建