创建自定义控件Kotlin.Android
创建自定义控件
自定义控件代码
其实就是把这段代码加载到了主活动里
inflate(R.layout.title,this)//获取布局
//第一个参数加载布局id 第二个参数父布局
button.setOnClickListener{//操作布局按钮
val activity=context as Activity//那个活动转为当前活动
activity.finish()//关闭这个活动
}
button1.setOnClickListener {//操作布局按钮
Toast.makeText(context,"怎么了",Toast.LENGTH_SHORT).show()
}
LayoutInflater.from(context)就是在当前活动创建了对象
package com.example.uilayout
import android.app.Activity
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.LinearLayout
import android.widget.Toast
import kotlinx.android.synthetic.main.title.view.*
//context那个活动
class TitleLayout(context:Context,attrs:AttributeSet):LinearLayout(context,attrs ) {
init {
//那个活动创建一个LayoutInflater对象inflate
LayoutInflater.from(context).inflate(R.layout.title,this)//获取布局
//第一个参数加载布局id 第二个参数父布局
button.setOnClickListener{//操作布局按钮
val activity=context as Activity//那个活动转为当前活动
activity.finish()//关闭这个活动
}
button1.setOnClickListener {//操作布局按钮
Toast.makeText(context,"怎么了",Toast.LENGTH_SHORT).show()
}
}
}
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:background="#E12525 ">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:gravity="center"
android:layout_margin="5dp"
android:background="#2FBD36"
android:text="Back"
android:textColor="#fff"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:gravity="center"
android:layout_weight="1"
android:layout_gravity="center"
android:text="我是标题"
android:textColor="#fff"
android:textSize="24sp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="#2FBD36"
android:text="Edit"
android:textColor="#fff"/>
</LinearLayout>
主活动代码
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportActionBar?.hide()
}
}
<?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="match_parent"
>
<com.example.uilayout.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>