Android 自定义多个文本视图
Android custom multiple textviews
我想制作类似下图的内容,多个 TextView
如果视图不适合最后一行,则视图转到下一行。
有人建议如何实现这样的目标吗?
afaik Android SDK 中没有针对此类行为的解决方案,但您可以自己编写(测量文本,如果不合适,请放在下一行 View
中)。这不是一件容易的事,所以我建议 FlexBox lib
您显示的图像是带有芯片的芯片组,而不是文本视图。如果您想实现您在那里看到的内容,只需创建一个芯片组并根据需要添加任意数量的芯片,它们将自动设置在屏幕上。
您可以使用 FlowLayout。检查这个:- https://github.com/nex3z/FlowLayout
还支持RTL布局
//自定义布局的 Flex 布局
implementation 'com.google.android:flexbox:2.0.0'
将此库用于此布局设计。
您可以使用 XML 代码以及编程方式创建筹码。
var chip: Chip = Chip(this)
chip.setText(name)
chip.setTextColor(ContextCompat.getColor(this, R.color.colorPrimaryDark))
val typeface =
ResourcesCompat.getFont(
this,
R.font.lato_semibold
)
chip.setTypeface(typeface)
chip.chipBackgroundColor = ColorStateList.valueOf(
ContextCompat.getColor(
this,
R.color.color_skyblue
)
)
chip.setPadding(Global.dpToPx(this, 15f), 0, Global.dpToPx(this, 15f), 0)
chip.chipCornerRadius = 40f
var param: LinearLayout.LayoutParams? =
LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
chip.layoutParams = param
flexLayoutSkills.addView(chip)
我想制作类似下图的内容,多个 TextView
如果视图不适合最后一行,则视图转到下一行。
有人建议如何实现这样的目标吗?
afaik Android SDK 中没有针对此类行为的解决方案,但您可以自己编写(测量文本,如果不合适,请放在下一行 View
中)。这不是一件容易的事,所以我建议 FlexBox lib
您显示的图像是带有芯片的芯片组,而不是文本视图。如果您想实现您在那里看到的内容,只需创建一个芯片组并根据需要添加任意数量的芯片,它们将自动设置在屏幕上。
您可以使用 FlowLayout。检查这个:- https://github.com/nex3z/FlowLayout
还支持RTL布局
//自定义布局的 Flex 布局
implementation 'com.google.android:flexbox:2.0.0'
将此库用于此布局设计。
您可以使用 XML 代码以及编程方式创建筹码。
var chip: Chip = Chip(this)
chip.setText(name)
chip.setTextColor(ContextCompat.getColor(this, R.color.colorPrimaryDark))
val typeface =
ResourcesCompat.getFont(
this,
R.font.lato_semibold
)
chip.setTypeface(typeface)
chip.chipBackgroundColor = ColorStateList.valueOf(
ContextCompat.getColor(
this,
R.color.color_skyblue
)
)
chip.setPadding(Global.dpToPx(this, 15f), 0, Global.dpToPx(this, 15f), 0)
chip.chipCornerRadius = 40f
var param: LinearLayout.LayoutParams? =
LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
chip.layoutParams = param
flexLayoutSkills.addView(chip)