- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是初学者。这几天开始学习自定义 View ,过程中几乎没有问题。
我去谷歌解决这个问题时,有人提出了解决方案,但都没有成功。我使用 Kotlin 编写的自定义 View 。
这是我的自定义 View 类,名字是MyView.kt
package com.example.demos
import android.R
import android.content.Context
import android.content.res.TypedArray
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.RectF
import android.util.AttributeSet
import android.view.View
import kotlin.math.min
class MyView : View {
// init
private lateinit var arcPaint: Paint
private lateinit var progressTextPaint: Paint
// private lateinit var arcPaintColor: Color
private var arcPaintColor = Color.BLACK
// private lateinit var progressTextPaintColor: Color
private var progressTextPaintColor = Color.BLACK
private var angle = 0f
private var progress: Float = angle / 3.6f
// get/set
fun setArcPaintColor(color: Int) {
arcPaintColor = color
}
fun getArcPaintColor(): Int {
return arcPaintColor
}
fun setProgressTextPaintColor(color: Int) {
progressTextPaintColor = color
}
fun getProgressTextPaintColor(): Int {
return progressTextPaintColor
}
fun setAngle(float: Float) {
angle = float
progress = angle / 3.6f
invalidate()
}
fun getAngle(): Float {
return angle
}
fun setProgress(float: Float) {
progress = float
angle = progress * 3.6f
invalidate()
}
fun getProgress(): Float {
return progress
}
/*call method initPaint()*/
constructor(context: Context) : super(context) {
initPaint()
}
constructor(context: Context, attributeSet: AttributeSet?) : super(context, attributeSet) {
initPaint()
}
constructor(context: Context, attributeSet: AttributeSet?, defStyleAttr: Int) : super(
context,
attributeSet,
defStyleAttr
) {
arcPaintColor = typedArray.getColor(R.styleable.arcPaintColor,)
initPaint()
}
/*override onDraw(),draw view*/
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
drawView(canvas)
}
//init paints
private fun initPaint() {
arcPaint = Paint(Paint.ANTI_ALIAS_FLAG).also {
it.color = arcPaintColor
it.strokeWidth = 5f
it.strokeWidth = 40f
it.style = Paint.Style.STROKE
it.strokeCap = Paint.Cap.ROUND
}
progressTextPaint = Paint(Paint.ANTI_ALIAS_FLAG).also {
it.color = progressTextPaintColor
// it.color = Color.GREEN
// it.setStrokeWidth(5f)
it.style = Paint.Style.FILL
it.textSize = 50f
}
}
/*draw view*/
private fun drawView(canvas: Canvas?) {
val displayWidth = width
val displayHeight = height
/*get center of circle*/
val centerX = (displayWidth / 2).toFloat()
val centerY = (displayHeight / 2).toFloat()
/*get radius*/
val radius = min(displayWidth, displayHeight) / 4
val rectF = RectF(
centerX - radius,
centerY - radius,
centerX + radius,
centerY + radius
)
canvas?.drawArc(
rectF,
0f,
angle,
false,
arcPaint
)
canvas?.drawText(
"${String.format("%.1f", progress)}%",
centerX - progressTextPaint.measureText("${String.format("%.1f", progress)}%") / 2,
centerY,
progressTextPaint
)
}
}
这是我的自定义属性的xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyView">
<attr name="arcPaintColor" format="color"/>
<attr name="progressTextPaintColor" format="color"/>
</declare-styleable>
</resources>
最佳答案
问题是您正在导入 android.R
您需要导入 [you package name].R 版本。
关于android - 当我在自定义 View 类中使用 R.styleable 时,我得到一个红色的 Unresolved reference : styleable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62673222/
我是初学者。这几天开始学习自定义 View ,过程中几乎没有问题。 我去谷歌解决这个问题时,有人提出了解决方案,但都没有成功。我使用 Kotlin 编写的自定义 View 。 这是我的自定义 View
我有一个自定义首选项控件,我在 values/attrs.xml 中为其定义了一些属性。只是为了集中讨论,这里是一个可以在 values/attrs.xml 中找到的属性示例:
假设我正在制作一些具有可样式化属性的新 View 。我这样声明它们(这是 how the documentation says to do it :
如何在属性中接受方法作为值?就像在 View 的 onClick 属性中一样: 如何定义接受方法的自定义属性? 我知道我们使用 在资源中,但我们如何让它接受方法? 最佳答案 Android 使用反射
我在一个项目中工作,我想使用约束!如果我使用它,当我想在 pohne 中构建 gradle 或安装 apk 时,我会遇到此错误: “错误:在约束集中,无法找到属性 android:elevation”
我是 android 开发的新手,我现在正在尝试创建自定义 View 。我遇到了很多问题。我已经解决了其中一些,但最难理解的是属性。让我们以带有属性的示例 xml 文件为例
我在 Maven Central 中有一个包含一些小部件的库。当我将该库作为依赖项(从 Maven Central)添加到使用 gradle 的项目时,我得到: java.lang.NoClassDe
我正在尝试将 Facebook Android SDK 导出为 JAR 以在我的项目中使用。 这需要动态加载所有资源。 例如,我必须进行类似这样的更改: //findViewById(R.id.com
是否可以在不引用资源类 R 的情况下以编程方式接收由 a 作为 int[] 保存的资源 ID? 问题是我无法解析定义的“declare-styleable”
我正在实现自己的 对于自定义 View (按照说明 here )。我希望能够指定一个整数数组作为可能的 XML 属性之一。我如何: 在 attrs.xml 中将整数数组指定为 XML 属性? 从 Ty
我有一个 resources.xml 文件位于目录 values/ 下,那是 /values/resources.xml 在我的 java 代码中,当我尝试
我有一个 CompositeComponent (EditText+ImageButton)单击按钮时,edittext 内容将被清除。它工作正常。我的问题是为我的组件设置属性。我正在使用 decla
当我在 android studio 3 中执行 paystack3.0.9 android 代码时出现以下错误。 Error:In ForegroundView, unable to find at
我正在使用形状 ImageView (https://github.com/siyamed/android-shape-imageview),当我想从形状 ImageView 定义的 declare-
我正在尝试整合 these libraries进入我的 Android 项目来制作导航 Controller 。当我将这两行添加到我的 build.gradle - 实现'android.arch.n
当我构建我的android项目时,出现以下错误 Error:In FontFamilyFont, unable to find attribute android:fontVariationSett
我正在尝试使用这个 ViewPager extension .这个插件帮助我使用 SwipeyTab。我成功地将示例作为单个应用程序运行。所以我想将扩展集成到我的应用程序中。然后我复制了 java 文
我正在阅读 Beginning Android 4 Development,在第 5 章中讨论了 Gallery 和 ImageVievs 并介绍了 declare-styleable XML 标记没
在 following the instructions 之后处理 Hello, Gallery 教程/示例应用程序时在网站上,Eclipse 报告 R.styleable 无法解析。 此错误的原因是
在 react native 中构建我的项目时,我收到以下错误: > Task :app:processDebugGoogleServices Parsing json file: /Users/ja
我是一名优秀的程序员,十分优秀!