안드로이드 프로그래밍[Kotiln Code]/안드로이드 부분 함수(권한얻기,인텐트, 데이터바인딩)

[Kotiln] 유저가 View 만드는 코드

훈츠 2020. 4. 7. 02:42
반응형

View 만드는 코드 

Kotiln code

open class InfoView @JvmOverloads constructor(context: Context,
                                              attrs: AttributeSet? = null,
                                              defStyleAttr: Int = 0)
    : LinearLayout(context, attrs, defStyleAttr){
    init {
        View.inflate(context, R.layout.view_info, this)
    }
}

info_view.xml code 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="8dp">

    <ImageView
        android:id="@+id/typeImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        app:srcCompat="@drawable/ic_alarm" />

    <TextView
        android:id="@+id/infoText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_weight="1"
        android:text="TextView" />
</LinearLayout>

AlarmInfoView.kt

class AlarmInfoView @JvmOverloads constructor(context: Context,
                                              attrs: AttributeSet? = null,
                                              defStyleAttr: Int = 0)
    : InfoView(context, attrs, defStyleAttr) {
    companion object {
        private val dateFormat = SimpleDateFormat("yy//MM/dd HH:mm")
    }
    init {
        typeImage.setImageResource(R.drawable.ic_alarm)
        infoText.setText("")
    }

    fun setAlarmDate(alarmDate : Date){
        if(alarmDate.before(Date())){
            infoText.setText("알람이 없습니다.")
        }else {
            infoText.setText(dateFormat.format(alarmDate))
        }
    }
}

액티비티에 View 

<view
android:id="@+id/alarmInfoView"
class="com.example.memoapp.data.AlarmInfoView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="24dp"
android:layout_marginTop="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

 

반응형