I have an app that read load up a text file and display the text. Now, the text file could be in English, Chinese, or whatever language. My question is, how do I properly display the characters without showing gibberish. Thanks!
refer to this link.
How to display korean text on Textview?
You require a True Type font(ttf) file to support the language you wish. Include the respective font file into your assets folder and try this code.
TextView text = (TextView) findViewById(R.id.textView1);
Typeface font=Typeface.createFromAsset(activity.getAssets(), "your-choice-font.ttf");
holder.text.setTypeface(font);
holder.text.setText(content_read_from_TxtFile);
Related
Basically i am creating an app which have multiple languages fonts means english as well as local language(Hindi & some other) fonts. but the problem is it display only english text not the other.Text in other languages shown in rectangle box. I want to show all types of text. please suggest me.
Here is the snapshot
I got my answer. here is the link
This file support all Indian language fonts and english too. Just copy paste this file in assets filder and include in the code
Typeface tf = Typeface.createFromAsset(getAssets(),
"fonts/file_name.ttf");
TextView tv = (TextView) findViewById(R.id.yourtextview);
tv.setTypeface(tf);
Can I put multi language in a textView ? for example could i have a textView with arabic text and english numbers?
Solution suggested by Murillo Henrique will work as long as both texts are encoded in Unicode format.
On the other hand, when any one of the text is in non-Unicode, then we won't be able to display it in a single TextView control.
As shown above, the first TextView displays both English and Arabic texts. This is because both are Unicode texts. For this to work, one can simply combine strings in different languages as shown below.
txtUnicode.setText( "The Saved Group " + "الفرقة الناجية");
In second TextView control, the loaded text is a non-Unicode Malayalam text. To correctly display the non-Unicode text, it requires loading corresponding font as shown below.
Typeface tfMalayalam = Typeface.createFromAsset(getAssets(), "fonts/FML-TT-Leela_Heavy.ttf");
textNonUnicode.setTypeface(tfMalayalam);
textNonUnicode.setText("hnPbn¨I£n");
As it can be seen, text passed to setText method is not readable because it is in a non-Unicode encoded form. But when correct font is supplied during runtime, it correctly displays the text.
This non-Unicode font loading will be very useful when we deal with non-Unicode texts from legacy sources.
In the third TextView control, a Unicode text is being appended to a non-Unicode text as shown below.
TextView textUnicodePlusNonUnicode = (TextView) findViewById(R.id.txtUnicdePlusNonUnicode);
textUnicodePlusNonUnicode.setTypeface(tfMalayalam);
textUnicodePlusNonUnicode.setText("hnPbn¨I£n" + " Unicode English");
Because there set a non-Unicode font, system will try to display the Unicode text using a non-Unicode encoding scheme specified by the loaded font. Hence the supplied Unicode text Unicode English won't be displayed as expected.
As an additional info, Google is in the process of defining a universal font called Noto for Android platform. Please see this for more details.
You have 2 options:
One: type your text, but switch between varius languages in your keyboard during the typing.
Or this second one, which I recommend, because you'll have all your texts inside one file, making more easily to modify it later.
myTextView.setText(R.string.text1 + " " + R.string.text2);
In your String.xml:
<string name="text1">Your english text goes here/>
<string name="text2">Your arabic text goes here/>
I am trying to display local Indian languages in my application. The data for the application is from web. I use a web service to display the contents from DB. I am converting the data in format of unicode and i receive the unicode in phone. Am trying to display the unicode and also i use the relevant font If telugu i use telugu fonts.
The unicode is displayed but there is spacing problem. To solve this i got a option of reshaping, that is like giving space with fixed codes and got for Arabic but i am now searching for telugu.
My reffered link is:
Refference for Arabic
You can put in HTML codes for the devanagari characters. There are quite a lot of online editors that will give these codes, like:
-> http://www.wandel.person.dk/hindi.html
(A text editor which you can use to write devanagari characters)
-> http://vikku.info/indian-language-unicode-converter/hindi-unicode-converter.html
(An english to hindi text converter)
Use Typeface option. Please see an example below
TextView text = (TextView) findViewById(R.id.text);
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
text.setTypeFace(font);
I have an app that must show some Malayalam text. I used some Malayalam fonts and tried to use that through typeface. Though all the characters are shown, some of the symbols are not shown or are displaced. I use android 2.2. Can anyone guide me to solve this problem?
As Malayalam fonts are not supported by Android, you can still give that support to your Application.
For Marathi font copy font file to your asset folder. then use the following code.
TextView text_view = new TextView(this);
Typeface font = Typeface.createFromAsset(getAssets(), "MalayalamFont.ttf");
text_view.setTypeface(font);
text_view.setText("മലയാളം");
the same way u can give support for hindi....
We can add font files to the assets folder and from there we can load it. here is useful link for you..
Display malayalam text in my app
I have two unfocused TextView in the single layout. I want to show Arabic text on one TextView and English text on another TextView. I have use values/strings.xml for English and values-ar/strings.xml for Arabic text. My problem is Arabic text not showing in the TextView. If I change the custom locale to ar means its showing. How to show the Arabic text without changing the custom locale?
Put both arabic and english text in each strings.xml
Its default behaviour for Android. It will take locale information from system and map appropriate string resource from values-ar.
Text you want to show in Arabic you have to take entry in values/strings.xml and have to put those arabic character that you want to display.
please share the result when you tried this.
To do this we need the font file for Arabic fonts. For example ,we have the Arabic font file name as arabicfont.ttf. Save this file into the assets folder then use the bellow code
arabicTextview.setTypeface(Typeface.createFromAsset(getContext().getAssets(),"arabicfont.ttf"));
arabicTextView.setText("ur text");
Like wise we can set any type of text with out using the Locale