检查什么类型的 child 有 LinearLayout
Check what type of child has a LinearLayout
我正在尝试检查哪种类型的 childrens 具有线性布局,但我一直认为文本视图与视图相同。如何区分文本视图和视图。
在我的线性布局中,我有一个视图和一个文本视图,在下面的代码中,当 child 是文本视图时,我在两个句子中都为真(我的意思是我在视图中为真如果那一刻的 child 是 textview,那么 View 和 view 就是 TextView)。我想知道如果 child 是 textview,当句子是 view 是 View 时,我怎么会得到 false。
这是我尝试检查 child 类型的地方:
private fun selectFromLayout(ll: LinearLayout, select: Boolean) {
val childCount = ll.childCount
for (i in 0 until childCount) {
val view = ll.getChildAt(i)
if (view is View) {
if (select) {
view.background = ContextCompat.getDrawable(context, R.drawable.back_select)
} else {
view.setBackgroundResource(R.color.white)
}
}
if (view is TextView) {
if (select) {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_dark))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_medium)
} else {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_medium))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_regular)
}
}
}
}
线性布局:
<LinearLayout
android:id="@+id/btn_tab1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:focusable="true"
android:gravity="bottom"
android:orientation="vertical">
<TextView
android:id="@+id/tv_tab1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:gravity="center"
app:textSize="10sp"
app:textType="regular"
tools:text="Próximas" />
<View
android:id="@+id/tab1_shadow"
android:layout_width="match_parent"
android:layout_height="2dp" />
</LinearLayout>
没有必要检查 is View
,因为它总是正确的,因为 android 中的所有视图都从 View
class.
扩展而来
private fun selectFromLayout(ll: LinearLayout, select: Boolean) {
val childCount = ll.childCount
for (i in 0 until childCount) {
val view = ll.getChildAt(i)
if (view is TextView) {
if (select) {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_dark))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_medium)
} else {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_medium))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_regular)
}
} else {
if (select) {
view.background = ContextCompat.getDrawable(context, R.drawable.back_select)
} else {
view.setBackgroundResource(R.color.white)
}
}
}
}
我正在尝试检查哪种类型的 childrens 具有线性布局,但我一直认为文本视图与视图相同。如何区分文本视图和视图。
在我的线性布局中,我有一个视图和一个文本视图,在下面的代码中,当 child 是文本视图时,我在两个句子中都为真(我的意思是我在视图中为真如果那一刻的 child 是 textview,那么 View 和 view 就是 TextView)。我想知道如果 child 是 textview,当句子是 view 是 View 时,我怎么会得到 false。
这是我尝试检查 child 类型的地方:
private fun selectFromLayout(ll: LinearLayout, select: Boolean) {
val childCount = ll.childCount
for (i in 0 until childCount) {
val view = ll.getChildAt(i)
if (view is View) {
if (select) {
view.background = ContextCompat.getDrawable(context, R.drawable.back_select)
} else {
view.setBackgroundResource(R.color.white)
}
}
if (view is TextView) {
if (select) {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_dark))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_medium)
} else {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_medium))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_regular)
}
}
}
}
线性布局:
<LinearLayout
android:id="@+id/btn_tab1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:focusable="true"
android:gravity="bottom"
android:orientation="vertical">
<TextView
android:id="@+id/tv_tab1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:gravity="center"
app:textSize="10sp"
app:textType="regular"
tools:text="Próximas" />
<View
android:id="@+id/tab1_shadow"
android:layout_width="match_parent"
android:layout_height="2dp" />
</LinearLayout>
没有必要检查 is View
,因为它总是正确的,因为 android 中的所有视图都从 View
class.
private fun selectFromLayout(ll: LinearLayout, select: Boolean) {
val childCount = ll.childCount
for (i in 0 until childCount) {
val view = ll.getChildAt(i)
if (view is TextView) {
if (select) {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_dark))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_medium)
} else {
view.setTextColor(ContextCompat.getColor(context, R.color.gray_medium))
view.typeface = ResourcesCompat.getFont(context, R.font.montserrat_regular)
}
} else {
if (select) {
view.background = ContextCompat.getDrawable(context, R.drawable.back_select)
} else {
view.setBackgroundResource(R.color.white)
}
}
}
}