這是實習第一周的幾天所做的事情,主要内容包括:
- 切圖
- 幾種基本控件的使用
- 主要實作功能:修改密碼,個人資料(頭像選擇,修改昵稱,性别選擇),關于我們
聲明:所有代碼基于kotlin和databinding。
首先是設定界面的跳轉:
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.menu_setting) {
SettingActivity.startActivity(this@EtripMainActivity)
return true
} else {
return super.onOptionsItemSelected(item)
}
}
重寫上述兩個方法,在首頁面中增加菜單欄并設定跳轉圖示和邏輯,跳轉到
SettingActivity
中。
SettingActivity
的界面如下:
代碼如下:
package com.radella.etrip.ui.setting
import android.content.Context
import android.content.Intent
import android.databinding.DataBindingUtil
import android.view.View
import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
import com.radella.etrip.R
import com.radella.etrip.base.BaseNormalActivity
import com.radella.etrip.databinding.ActivitySetting1Binding
import com.radella.etrip.ui.main.EtripMainActivity
class SettingActivity : BaseNormalActivity(),View.OnClickListener {
override fun onClick(v: View?) {//各控件的點選事件,分别進入不同頁面中
val text: TextView? = v?.findViewById(R.id.text) as TextView?
when(text?.text)
{
"個人資料" -> {
PersonalDataActivity.startActivity([email protected])
}
"修改密碼" -> {
ModifyPwdActivity.startActivity([email protected])
}
"關于我們" ->
{
AboutUsActivity.startActivity([email protected])
}
}
}
lateinit var settingBinding: ActivitySetting1Binding
var strings:Strings?=null
override fun daggerInject() {
}
override fun initialize() {//初始化界面的資料,通過databinding綁定到xml檔案,然後注冊點選事件
strings=Strings("個人資料","")
settingBinding.personalData=strings
strings=Strings("修改密碼","")
settingBinding.changePwd=strings
strings=Strings("關于我們","")
settingBinding.aboutUs=strings
var item1:LinearLayout?= findViewById(R.id.item1) as LinearLayout?
item1?.setOnClickListener([email protected])
var item2:LinearLayout?= findViewById(R.id.item2) as LinearLayout?
item2?.setOnClickListener([email protected])
var item3:LinearLayout?= findViewById(R.id.item3) as LinearLayout?
item3?.setOnClickListener([email protected])
var returnEtripMain:Button= findViewById(R.id.setting_return_EtripMain) as Button
returnEtripMain.setOnClickListener(View.OnClickListener {
EtripMainActivity.startActivity([email protected])
finish() })
}
override fun loadViewLayout() {//databinding綁定到xml中
settingBinding = DataBindingUtil.inflate(layoutInflater, R.layout.activity_setting1,binding.llContainer,true) }
companion object{//在其他activity中調用該方法啟動本activity
fun startActivity(context: Context){
val intent = Intent()
intent.setClass(context,SettingActivity::class.java)
context.startActivity(intent)
}
}
}
以及
SettingActivity
的xml布局
R.layout.activity_setting1
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/tools">
<data>
<variable
name="personal_data"
type="com.radella.etrip.ui.setting.Strings"/>
<variable
name="change_pwd"
type="com.radella.etrip.ui.setting.Strings"/>
<variable
name="about_us"
type="com.radella.etrip.ui.setting.Strings"/>
</data>
<LinearLayout
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="設定"
android:layout_marginTop="102dp"
android:textSize="26sp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:background="@color/black_alpha_10" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/item1">
<include
layout="@layout/line_with_text"
bind:viewModel="@{personal_data}" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/item2">
<include
layout="@layout/line_with_text"
bind:viewModel="@{change_pwd}" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/item3">
<include
layout="@layout/line_with_text"
bind:viewModel="@{about_us}" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/setting_return_EtripMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginEnd="40dp"
android:layout_marginTop="16dp"
android:text="登出"
android:textSize="16sp"
android:textColor="@color/white"
android:layout_gravity="center_vertical"
android:backgroundTint="@color/colorPrimary"/>
</LinearLayout>
</layout>
這裡有幾點要注意:
- databinding與include标簽的結合,可以将目前xml布局的資料傳輸到include的布局中
- 設定Button的背景
,效果好于backgroundTint
,有圓角background
PersonalDataActivity
個人資料界面
代碼部分:
package com.radella.etrip.ui.setting
import android.Manifest
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.content.pm.PackageManager
import android.databinding.DataBindingUtil
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.os.Bundle
import android.os.Environment
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.app.AlertDialog
import android.util.Log
import android.view.Gravity
import android.view.KeyEvent
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.PopupWindow
import android.widget.TextView
import com.radella.etrip.R
import com.radella.etrip.base.BaseNormalActivity
import com.radella.etrip.databinding.ActivityPersonalDataBinding
import com.sw926.imagefileselector.ErrorResult
import com.sw926.imagefileselector.ImageFileSelector
class PersonalDataActivity : BaseNormalActivity(),View.OnClickListener {
lateinit var personalDataBinding: ActivityPersonalDataBinding
lateinit var imageSelector: ImageFileSelector
var popupWindow:PopupWindow?=null
override fun onClick(v: View?) {
if (v?.id==R.id.head_icon)//點選頭像,彈出popwindow
{
val current_view=layoutInflater.inflate(R.layout.activity_personal_data,null)
val view = layoutInflater.inflate(R.layout.head_icon_choose, null)
val windowManager = windowManager
val width = windowManager.defaultDisplay.width
val heigth = windowManager.defaultDisplay.height
Log.i("width", width.toString() + "")
Log.i("height", heigth.toString() + "")
popupWindow = PopupWindow(view, width.toInt(), heigth.toInt())
popupWindow?.animationStyle=R.style.anim_menu_bottom_bar//設定彈出動畫
popupWindow?.isFocusable = true
popupWindow?.isTouchable=true
popupWindow?.isOutsideTouchable = true
view.isFocusable=true
view.isFocusableInTouchMode=true
view.setOnKeyListener(object :View.OnKeyListener{//設定點選傳回鍵的事件,令popwindow消失
override fun onKey(v: View?, keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode==KeyEvent.KEYCODE_BACK)
{
if (popupWindow?.isShowing!!)
{
popupWindow?.dismiss()
}
}
return false
}
}
)
// popupWindow?.setBackgroundDrawable(PaintDrawable())
//顯示在螢幕中央
popupWindow?.showAtLocation(current_view, Gravity.CENTER, , )
val close_icon:ImageView= view.findViewById(R.id.close_icon) as ImageView
close_icon.setOnClickListener(View.OnClickListener {popupWindow?.dismiss()})
val take_picture:ImageView= view.findViewById(R.id.take_picture) as ImageView
take_picture.setOnClickListener(View.OnClickListener {
popupWindow?.dismiss()
imageSelector.takePhoto([email protected],) })
val photo_album:ImageView= view.findViewById(R.id.photo_album) as ImageView
photo_album.setOnClickListener(View.OnClickListener {
popupWindow?.dismiss()
imageSelector.selectImage([email protected],) })
return
}
val text: TextView? = v?.findViewById(R.id.text) as TextView?
when(text?.text)
{
"昵稱" ->
{
var intent:Intent=Intent([email protected],ModifyNicknameActivity::class.java)
intent.putExtra("nickname",personalDataBinding.text2.data)
startActivityForResult(intent,)
}
"性别" ->{
val choiceonclicklistener=ChoiceOnClickListener()
val sex:String?=personalDataBinding.text3.data
val sexInt=if (sex=="女") else
val sexDialog:Dialog=AlertDialog.Builder([email protected])
.setTitle("選擇性别")
.setSingleChoiceItems(R.array.sex,sexInt,choiceonclicklistener)
.setPositiveButton("确定", DialogInterface.OnClickListener { dialog, which ->
if (choiceonclicklistener.which==)
{
var strings=Strings("性别","男")
personalDataBinding.text3=strings
}
else
{
var strings=Strings("性别","女")
personalDataBinding.text3=strings
}
})
.create()
sexDialog.show()
}
}
}
override fun loadViewLayout() {
personalDataBinding=DataBindingUtil.inflate(layoutInflater, R.layout.activity_personal_data,binding.llContainer,true)
}
override fun daggerInject() {
}
override fun initialize() {
val str="頭像"
personalDataBinding.text1=str
var strings=Strings("昵稱","周吉")
personalDataBinding.text2=strings
strings=Strings("性别","女")
personalDataBinding.text3=strings
// strings=Strings("地區","北京")
// personalDataBinding.text4=strings
var item1:ImageView=findViewById(R.id.head_icon) as ImageView
item1.setOnClickListener([email protected])
var item2:LinearLayout= findViewById(R.id.personal_data_item2) as LinearLayout
item2.setOnClickListener([email protected])
var item3:LinearLayout= findViewById(R.id.personal_data_item3) as LinearLayout
item3.setOnClickListener([email protected])
imageSelector = ImageFileSelector([email protected])
imageSelector.setOutPutPath(Environment.getExternalStorageDirectory().toString() + "/tencent/QQfile_recv/")
Log.v("FILEPATH1",Environment.getExternalStorageDirectory().toString() + "/tencent/QQfile_recv/")
// 設定輸出檔案的尺寸
imageSelector.setOutPutImageSize(, )
// 設定儲存圖檔的品質 到
imageSelector.setQuality()
imageSelector.setCallback(object : ImageFileSelector.Callback {
override fun onSuccess(file: String) {
// 選取圖檔成功
Log.v("FILEPATH2",file)
// val head_icon_layout=layoutInflater.inflate(R.layout.line_with_image,null)
val head_icon_layout: View? =findViewById(R.id.head_icon)
val head_icon_image:ImageView?= head_icon_layout?.findViewById(R.id.head_icon) as ImageView?
if (head_icon_image==null)
{
Log.v("HEADICON","NULL")
}
else
{
val image:Bitmap?= BitmapFactory.decodeFile(file)
head_icon_image?.setImageBitmap(image)
head_icon_image.scaleType=ImageView.ScaleType.CENTER_CROP
}
}
override fun onError(errorResult: ErrorResult?) {
when(errorResult){
}
}
})
checkPermissionPic()
}
/**
* 檢查讀取相冊的權限
*/
fun checkPermissionPic(){
if( ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED ){
}else {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE), );
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE), );
}
}
}
//點選儲存退到設定界面
fun clickReturnSetting(view: View){
finish()
}
companion object{
fun startActivity(context: Context){
val intent = Intent()
intent.setClass(context,PersonalDataActivity::class.java)
context.startActivity(intent)
}
}
class ChoiceOnClickListener:DialogInterface.OnClickListener{
var which:Int=
override fun onClick(dialog: DialogInterface?, which: Int) {
this.which=which
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode==&&resultCode==)
{
var bundle:Bundle?=data?.getBundleExtra("nickname")
var strings=Strings("昵稱", bundle!!["nickname"] as String?)
personalDataBinding.text2=strings
}
imageSelector.onActivityResult([email protected],requestCode,resultCode,data)
}
override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState)
imageSelector.onSaveInstanceState(outState)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
super.onRestoreInstanceState(savedInstanceState)
imageSelector.onRestoreInstanceState(savedInstanceState)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
if (requestCode == ){
if (grantResults.size == && grantResults[] == PackageManager.PERMISSION_GRANTED && grantResults[] == PackageManager.PERMISSION_GRANTED) {
//授權成功
} else {
//授權失敗
}
}
else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
imageSelector.onRequestPermissionsResult([email protected],requestCode, permissions, grantResults)
}
}
}
這個個人資料的界面代碼是耗時最多的部分,幹了三件事:
- 選擇頭像
- 修改昵稱
- 選擇性别
分别細說:
1.選擇頭像。
核心:popwindow、imageSelector的使用、權限申請和檢查,popwindow用于在點選頭像時彈出半透明的選擇方式界面,注意界面本身和界面外部的屬性設定即可。
imageSelector的使用:
imageSelector = ImageFileSelector([email protected]) imageSelector.setOutPutPath(Environment.getExternalStorageDirectory().toString() + "/tencent/QQfile_recv/")
// 設定輸出檔案的尺寸
imageSelector.setOutPutImageSize(, )
// 設定儲存圖檔的品質 到
imageSelector.setQuality()
imageSelector.setCallback(object : ImageFileSelector.Callback {
override fun onSuccess(file: String) {
// 選取圖檔成功
Log.v("FILEPATH2",file)
// val head_icon_layout=layoutInflater.inflate(R.layout.line_with_image,null)
val head_icon_layout: View? =findViewById(R.id.head_icon)
val head_icon_image:ImageView?= head_icon_layout?.findViewById(R.id.head_icon) as ImageView?
if (head_icon_image==null)
{
Log.v("HEADICON","NULL")
}
else
{
val image:Bitmap?= BitmapFactory.decodeFile(file)
head_icon_image?.setImageBitmap(image)
head_icon_image.scaleType=ImageView.ScaleType.CENTER_CROP
}
}
override fun onError(errorResult: ErrorResult?) {
when(errorResult){
}
}
})
}
當選取圖檔成功後會調用onSuccess方法
其次要在
onSaveInstanceState、
onRestoreInstanceState、
onRequestPermissionsResult
方法最後分别加上
imageSelector.onSaveInstanceState(outState)、
imageSelector.onRestoreInstanceState(savedInstanceState)、
imageSelector.onRequestPermissionsResult([email protected],requestCode, permissions, grantResults)
關于權限方面其實百度就行,代碼中也有了
xml檔案如下:
activity_personal_data
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/tools">
<data>
<variable
name="text1"
type="String"/>
<variable
name="text2"
type="com.radella.etrip.ui.setting.Strings"/>
<variable
name="text3"
type="com.radella.etrip.ui.setting.Strings"/>
<!--<variable-->
<!--name="text4"-->
<!--type="com.radella.etrip.ui.setting.Strings"/>-->
</data>
<LinearLayout
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="個人資料"
android:layout_marginTop="102dp"
android:textSize="26sp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="18dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/personal_data_item1">
<include
layout="@layout/line_with_image"
bind:text="@{text1}"
android:id="@+id/head_icon_layout"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/personal_data_item2">
<include
layout="@layout/line_with_text"
bind:viewModel="@{text2}"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/personal_data_item3">
<include
layout="@layout/line_with_text"
bind:viewModel="@{text3}"/>
</LinearLayout>
<!--<include-->
<!--layout="@layout/line_with_text"-->
<!--bind:viewModel="@{text4}"/>-->
</LinearLayout>
</LinearLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="76dp"
android:layout_marginEnd="76dp"
android:layout_marginTop="32dp"
android:text="儲存"
android:textColor="@color/white"
android:backgroundTint="@color/colorPrimary"
android:textSize="16sp"
android:layout_gravity="center_vertical"
android:onClick="clickReturnSetting"
/>
</LinearLayout>
</layout>
2.修改昵稱
ModifyNicknameActivity
package com.radella.etrip.ui.setting
import android.content.Context
import android.content.Intent
import android.databinding.DataBindingUtil
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import com.radella.etrip.R
import com.radella.etrip.base.BaseNormalActivity
import com.radella.etrip.dagger.ActivityModule
import com.radella.etrip.dagger.DaggerAppComponent
import com.radella.etrip.databinding.ActivityModifyNicknameBinding
import com.radella.etrip.viewmodle.setting.ModifyNameViewModel
import javax.inject.Inject
class ModifyNicknameActivity : BaseNormalActivity(),View.OnClickListener {
lateinit var modifyNicknameBinding: ActivityModifyNicknameBinding
@Inject lateinit var viewModel: ModifyNameViewModel
override fun loadViewLayout() {
modifyNicknameBinding=DataBindingUtil.inflate(layoutInflater, R.layout.activity_modify_nickname,binding.llContainer,true)
}
override fun daggerInject() {
DaggerAppComponent
.builder().activityModule(ActivityModule([email protected]))
.build()
.inject(this)
}
override fun initialize() {
modifyNicknameBinding.viewModel = viewModel
oldnickname=intent.getStringExtra("nickname")
modifyNicknameBinding.viewModel.edit_text.set(oldnickname)
//擷取原昵稱
if (oldnickname?.isNotEmpty()!!)
{
modifyNicknameBinding.viewModel.save_color.set(resources.getColor(R.color.colorPrimary))
modifyNicknameBinding.viewModel.saveEnabled.set(true)
//當編輯框不為空時令儲存按鈕可點選
}
else
{
//否則不可點選 modifyNicknameBinding.viewModel.save_color.set(resources.getColor(R.color.qupai_gray_0xd4))
modifyNicknameBinding.viewModel.saveEnabled.set(false)
}
}
var oldnickname:String?=null
override fun onClick(v: View?) {
val edit_nickname:String=modifyNicknameBinding.viewModel.edit_text.get()
var bundle:Bundle=Bundle()
bundle.putString("nickname", edit_nickname)
Log.v("edit_nickname",edit_nickname)
intent.putExtra("nickname",bundle)
setResult(,intent)
// PersonalDataActivity.startActivity([email protected])
finish()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var saveButton: Button = findViewById(R.id.modify_nickname_save) as Button
saveButton.setOnClickListener([email protected])
// oldnickname=intent.getStringExtra("nickname")
// var edit_nickname:MaterialEditText= findViewById(R.id.edit_nickname) as MaterialEditText
// edit_nickname.setText(oldnickname)
}
companion object{
fun startActivity(context: Context){
val intent = Intent()
intent.setClass(context,ModifyNicknameActivity::class.java)
context.startActivity(intent)
}
}
}
xml檔案:
activity_modify_nickname
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.radella.etrip.viewmodle.setting.ModifyNameViewModel"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginStart="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="102dp"
android:text="修改昵稱"
android:textSize="26sp"/>
<TextView
style="@style/text_20_black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="可使用中英文、數字和下劃線,字數限制1-10個字"
android:textSize="12sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="68dp"
android:text="輸入昵稱"
android:textSize="12sp"/>
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/edit_nickname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:maxLength="10"
android:text="@{viewModel.edit_text.get()}"
app:onTextChangedCommand="@{viewModel.textChangeCommand}"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:backgroundTint="@{viewModel.save_color.get()}"
android:text="儲存"
android:textSize="16sp"
android:textColor="#fff"
android:layout_marginStart="40dp"
android:layout_marginEnd="40dp"
android:layout_gravity="center_horizontal"
android:enabled="@{viewModel.saveEnabled.get()}"
android:id="@+id/modify_nickname_save"/>
</LinearLayout>
</LinearLayout>
</layout>
1.
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/edit_nickname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:maxLength="10"
android:text="@{viewModel.edit_text.get()}"
app:onTextChangedCommand="@{viewModel.textChangeCommand}"
/>
設定最長字數用maxlength
2.該頁面的viewmodel
package com.radella.etrip.viewmodle.setting
import android.app.Activity
import android.databinding.ObservableBoolean
import android.databinding.ObservableField
import android.databinding.ObservableInt
import android.util.Log
import com.kelin.mvvmlight.base.ViewModel
import com.kelin.mvvmlight.bindingadapter.edittext.ViewBindingAdapter
import com.kelin.mvvmlight.command.ReplyCommand
import com.radella.etrip.R
import rx.functions.Action0
import java.util.*
import javax.inject.Inject
/**
* Created by 鄧蘇桃 on 2017/7/21.
*/
class ModifyNameViewModel @Inject internal constructor():ViewModel{
@Inject lateinit var context: Activity
var saveEnabled= ObservableBoolean()
var edit_text=ObservableField<String>()
var save_color=ObservableInt()
var textChangeCommand=ReplyCommand<ViewBindingAdapter.TextChangeDataWrapper>(){
t ->
Log.v("edit_text1",edit_text.get())
if (t.s.isNotEmpty())
{
saveEnabled.set(true)
save_color.set(context.resources.getColor(R.color.colorPrimary))
}
else
{
saveEnabled.set(false)
save_color.set(context.resources.getColor(R.color.qupai_gray_0xd4))
}
edit_text.set(t.s.toString())
Log.v("edit_text2",edit_text.get())
}
}
使用了ReplyCommand,其類型需要查詢文檔。
set_color應該這樣設定:
save_color.set(context.resources.getColor(R.color.colorPrimary))
而不是直接寫
R.color.colorPrimary
3.選擇性别
就是一個簡單的Dialog建立,實作
DialogInterface.OnClickListener
接口以記錄點選的位置(which)
其他兩個界面比較簡單,修改密碼調下界面即可,關于我們的圖要用ScaleType:centercrop來充滿整個頁面。