Intereting Posts

Как отображать персидские (фарси) числа в представлениях

Я хочу отображать персидские (фарси) числа на представлениях. Например, я рассчитал дату и преобразовал ее в календарь Jalali, но как я могу отображать ее по персидским числам?

Solutions Collecting From Web of "Как отображать персидские (фарси) числа в представлениях"

Другой способ отображения чисел с персидским шрифтом – использование следующего класса-помощника:

 public class FormatHelper { private static String[] persianNumbers = new String[]{ "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" }; public static String toPersianNumber(String text) { if (text.length() == 0) { return ""; } String out = ""; int length = text.length(); for (int i = 0; i < length; i++) { char c = text.charAt(i); if ('0' <= c && c <= '9') { int number = Integer.parseInt(String.valueOf(c)); out += persianNumbers[number]; } else if (c == '٫') { out += '،'; } else { out += c; } return out; } } 

Сохраните этот класс как формат UTF8 и используйте его как следующий код FormatHelper.toPersianNumber (numberString);

С помощью класса Typeface тип шрифта вида может быть изменен на шрифт Farsi, поэтому номера могут отображаться шрифтами Farsi:

 Typeface typeface = Typeface.createFromAsset(getAssets(), "FarsiFontName.ttf"); myView.setTypeface(typeface); 

Установить языковой стандарт на арабский, Египет

 int i = 25; NumberFormat nf = NumberFormat.getInstance(new Locale("ar","EG")); nf.format(i); 

Вы можете создать собственное представление и прикрепить шрифт farsi на этом, наконец, вы можете использовать это на xml views.most шрифт farsi не имеет английского номера на карте символов, и вы можете использовать это просто без проблем. например :

 public class TextViewStyle extends TextView { public TextViewStyle(Context context) { super(context); init(context, null, 0); } public TextViewStyle(Context context, AttributeSet attrs) { this(context, attrs, 0); init(context, attrs, 0); } public TextViewStyle(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context, attrs, defStyle); } private void init(Context context, AttributeSet attrs, int defStyle){ try { TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.TextViewStyle, defStyle, 0); String str = a.getString(R.styleable.TextViewStyle_fonttype); switch (Integer.parseInt(str)) { case 0: str = "fonts/byekan.ttf"; break; case 1: str = "fonts/bnazanin.ttf"; break; case 2: str = "fonts/btitr.ttf"; break; case 3: str = "fonts/mjbeirut.ttf"; break; case 4: str = "fonts/bnazanin_bold.ttf"; break; default: str = "fonts/bnazanin.ttf"; break; } setTypeface(FontManager.getInstance(getContext()).loadFont(str)); } catch (Exception e) { e.printStackTrace(); } } } 

Attr.xml:

 <declare-styleable name="TextViewStyle"> <attr name="selected_background" format="integer"/> <attr name="fonttype"> <enum name="byekan" value="0"/> <enum name="bnazanin" value="1"/> <enum name="btitr" value="2"/> <enum name="mjbeirut" value="3"/> <enum name="bnazaninBold" value="4"/> </attr> </declare-styleable> 

Вы должны добавить персидскую стандартную клавиатуру в Windows и перейти на эту клавиатуру, если хотите ввести персидские цифры и слова. Это работа для меня