Anko相当于xml中的样式attr

时间:2017-01-24 15:41:05

标签: android kotlin anko

我需要创建无边框按钮。设置public void loadImage(View view) { loadedImage = (ImageView)findViewById(R.id.upload_image1); Drawable drawable = loadedImage.getDrawable(); if(drawable.getConstantState().equals(getResources().getDrawable(R.drawable.camera_icon).getConstantState())) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "SelectPicture"), SELECT_PICTURE); } else { Intent i = new Intent(this, ShowImage.class); i.putExtra("uri",selectedImageURI.toString()); startActivity(i); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { selectedImageURI = data.getData(); loadedImage = (ImageView)findViewById(R.id.upload_image1); loadedImage.setScaleType(ImageView.ScaleType.CENTER_CROP); Glide.with(this).load(selectedImageURI) .into((ImageView) findViewById(R.id.upload_image1)); } } } 的最简单的xml方法。我尝试使用Widget.AppCompat.Button.Borderless

执行此操作
Anko

但没有效果。我做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试使用第三个构造函数参数,该参数接受attr资源:

addView(Button(activity, null, R.attr.borderlessButtonStyle))

此外,您可以将其声明为DSL组件:

fun ViewManager.borderlessButton(textRes: Int = 0) =
        borderlessButton(textRes) { }

fun ViewManager.borderlessButton(textRes: Int = 0, init: Button.()->Unit) =
        ankoView({ Button(it, null, R.attr.borderlessButtonStyle) }, 0) {
            if (textRes != 0) setText(textRes)
            init()
        }

然后,您的呼叫网站可能如下所示:

borderlessButton(android.R.string.ok)

您可以查看以类似方式声明的Anko的horizontalProgressBar方法和HORIZONTAL_PROGRESS_BAR_FACRTORY

答案 1 :(得分:-1)

订单错了。试试这个:

button("Your text", android.support.design.R.style.Base_Widget_AppCompat_Button_Borderless_Colored) {
  //your params
 }

这适合我。