我从dimens.xml设置texview的大小。但是在不同的移动屏幕(如)中,它的行为有所不同。在荣誉6x设备中,字体看起来很大,而intex移动设备看起来很小,但是我应用相同的textsize。
这是我的代码:-
private fun changeStandardDialog(standardList: ArrayList<Category>) {
val factory = LayoutInflater.from(this)
val standardDialog = factory.inflate(R.layout.select_standard_diolog, null)
selectedStandardId = SettingsHandler(this).getSettings("default_standard")
for (item in standardList) {
val rdbtn = RadioButton(this)
rdbtn.id = item.id
rdbtn.text = item.title
if (selectedStandardId.toInt() == item.id) {
rdbtn.isChecked = true
}
rdbtn.textSize = resources.getDimension(R.dimen.radio_text_size)
val textColor = Color.parseColor("#323642")
rdbtn.setButtonTintList(ColorStateList.valueOf(textColor));
rdbtn.setPadding(20, 30, 30, 30)
standardDialog.selectSubjectList.addView(rdbtn)
}
AlertDialog.Builder(this, R.style.MyDialogTheme)
.setTitle(R.string.selectStd)
.setPositiveButton("Ok") { dialog, whichButton ->
if (standardDialog.selectSubjectList.checkedRadioButtonId > 0) {
changeSelectedStandardTitle(standardDialog.selectSubjectList.checkedRadioButtonId)
settingHandler.updateSettingsViaKey("default_standard", standardDialog.selectSubjectList.checkedRadioButtonId.toString())
}
dialog.dismiss()
}
.setNegativeButton("Cancel") { dialog, whichButton ->
dialog.dismiss()
}
.setView(standardDialog)
.create()
.show()
}
我的R.dimen.radio_text_size的dimens.xml:-
<dimen name="radio_text_size">6sp</dimen>
在这里,我将6 sp用于单选按钮Textview显示不同的屏幕文本大小左侧Honor 6x ScreenShot和右侧Intex
答案 0 :(得分:0)
尝试一下:
rdbtn.textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,resources.getDimension(R.dimen.radio_text_size), resources.getDisplayMetrics());
答案 1 :(得分:0)
如果查看sp
的实现,您会发现它会将您提供的值视为getDimension
值。当您使用sp
时,会将dimens.xml
的{{1}}值转换为像素值,然后在TextView上设置该值时,它会将像素值转换为sp值转换为另一个(不同的)像素值。
您要么只想在类似的代码中使用sp值
rbbtn.textSize = 6f
或者您将要指定您正在使用像素,并使用从调光中获取的值
rdbtn.setTextSize(TypedValue.COMPLEX_UNIT_PX, resources.getDimension(R.dimen.radio_text_size))