Я создал пользовательский вид в Kotlin для Android под названием CardButtonView. Однако, когда я использую эту точку зрения, атрибут видимости не уважается. Например, если я устанавливаю Android: Visibility = "Gone", это не имеет никакого эффекта. Кроме того, когда я установил событие OnClick, оно тоже не уволено. Ниже приведены макет и класс моего представления: < /p>
макет: < /p>
< /code>
< /div>
< /div>
< /p>
class: < /p>
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
class CardButtonView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
private var mOnClickListener: View.OnClickListener? = null
private lateinit var mLlRoot: LinearLayout
private lateinit var mTvText: TextView
private lateinit var mIvImage: ImageView
@DrawableRes
var src: Int = 0
var text: String? = null
var active: Boolean = false
init {
initView(context, attrs)
initListeners()
}
override fun setOnClickListener(l: OnClickListener?) {
super.setOnClickListener(l)
mOnClickListener = l
}
private fun initListeners() {
mLlRoot.setOnClickListener {
mOnClickListener?.onClick(mLlRoot)
}
}
private fun initView(context: Context, attrs: AttributeSet?) {
LayoutInflater.from(context).inflate(R.layout.view_card_button, this, true)
mLlRoot = findViewById(R.id.ll_root)
mTvText = findViewById(R.id.tv_text)
mIvImage = findViewById(R.id.iv_image)
attrs?.let {
val typedArray = context.obtainStyledAttributes(
it,
R.styleable.CardButtonView,
0,
0
)
src =
typedArray.getResourceId(R.styleable.CardButtonView_icon_src, 0)
text = typedArray.getString(R.styleable.CardButtonView_text)
active = typedArray.getBoolean(R.styleable.CardButtonView_active, false)
typedArray.recycle()
}
text?.let {
mTvText.text = it
}
if (src != 0) {
mIvImage.setImageResource(src)
}
setActiveState(active)
}
fun setActiveState(isActive: Boolean) {
active = isActive
if (active) {
val foreColor = ContextCompat.getColor(context, R.color.ColorNeutralColor00)
mLlRoot.setBackgroundResource(R.drawable.card_button_background_highlight)
mTvText.setTextColor(foreColor)
mIvImage.setColorFilter(foreColor)
} else {
val foreColor = ContextCompat.getColor(context, R.color.brand_color_primary_pure)
mLlRoot.setBackgroundResource(R.drawable.card_button_background_outline)
mTvText.setTextColor(foreColor)
mIvImage.setColorFilter(foreColor)
}
}
}
< /code>
Использовать: < /p>
android:id="@+id/btn_top_sale"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:visibility="gone"
app:active="false"
app:icon_src="@drawable/ic_trophy"
app:layout_constraintTop_toBottomOf="@id/btn_product_update"
app:text="@string/button_top_sales" />
< /code>
Что я делаю неправильно или не делаю? Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/796 ... iew-androi
Атрибут видимости и событие Onclick не работают в Cotlin Custom View (Android) ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Атрибут видимости и событие Onclick не работают в Cotlin Custom View (Android)
Anonymous » » в форуме Android - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Атрибут видимости и событие Onclick не работают в Cotlin Custom View (Android)
Anonymous » » в форуме Android - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Видимость атрибута и OnClick не работают в Cotlin Custom View (Android)
Anonymous » » в форуме Android - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-