Привет @Daniel, если вы программно генерируете текстовое представление как следующий код
TextView tv = new TextView();
tv.setTextSize(10); // Sets text in sp (Scaled Pixel).
И если вы хотите установить размер текста с другой единицей, чтобы вы могли достичь следующим способом.
TextView tv = new TextView();
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 10); // Sets text in px (Pixel).
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); // Sets text in dip (Device Independent Pixels).
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10); // Sets text in sp (Scaled Pixel).
tv.setTextSize(TypedValue.COMPLEX_UNIT_PT, 10); // Sets text in pt (Points).
tv.setTextSize(TypedValue.COMPLEX_UNIT_IN, 10); // Sets text in in (inches).
tv.setTextSize(TypedValue.COMPLEX_UNIT_MM, 10); // Sets text in mm (millimeters).
По умолчанию Android использует «sp» для размера текста и «px» для размера представления.
Для других размеров представления мы можем установить в пикселях (пикселях), но если вы хотите настроить единицу измеренияВы можете использовать пользовательские методы
/**
* Converts dip to px.
*
* @param context - Context of calling class.
* @param dip - Value in dip to convert.
* @return - Converted px value.
*/
public static int convertDipToPixels(Context context, int dip) {
if (context == null)
return 0;
Resources resources = context.getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, resources.getDisplayMetrics());
return (int) px;
}
Из вышеописанного метода вы можете преобразовать YOUR_DESIRED_UNIT в пиксели и затем установить для просмотра.Вы можете заменить
TypedValue.COMPLEX_UNIT_DIP
указанным выше блоком в соответствии с вашим вариантом использования.Вы также можете использовать его наоборот для px, чтобы окунуть, но мы не можем назначить пользовательский блок для просмотра, поэтому я использую его вот так.
Надеюсь, я хорошо объяснил это.