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/>
Related
I try to use html-tags for my text in EditText and I want to save it in Room database. So I created a string with html tags like that:
EditText.setText("Hi <font color="#4B0082">there</font>".parseAsHtml())
It works, but when I try to get it back from the EditText like that:
EditText.text.toHtml()
I get this:
<p dir="ltr">Hi <span style="color:#4B0082;">there</span></p>
Why EditText changes my tags and adds something else? I don't need "p" and "span" tags at all. What am I supposed to do? How to get my original string back from the EditText?
Android views, in general, do not operate directly on HTML tags. When you set the text to the EditText, a translation occurs to Spans. In your example,
"Hi <font color="#4B0082">there</font>"
the font color is translated to a ForegroundColorSpan.
When you try to get the text back from the EditText, a reverse translation occurs and the ForegroundColorSpan is translated to an HTML span tag with a style that specifies the font color. This is equivalent in appearance to the original HTML code.
I assume, since your are placing the text into an EditText, that the text could be changed and what you want is the updated text encoded into the same type of HTML that you placed into the EditText. (If you simply want to retrieve exactly the same string back that you put into the EditText you could try using a View tag).
I think that the only way to get the translation you want is to write your own conversion routine. You can get the spans from the text with getSpans(). You would write something similar to Html.toHtml(). This could be a simple or hard task depending upon how robust the translation needs to be.
There could also be a library that can be customized, but I am unaware of one.
Try this one:
String text = Html.toHtml(yourEditText.getText())
It should return you a text with html formatting
In my text view, I am setting the HTML text:
mTextView.setText(Html.fromHtml("THIS USEFUL INTERESTING HTML TEXT IS DISPLAYED IN ANDROID TEXT VIEW"));
The Text is displayed as below:
The long word at the end is breaking with a hyphen. I want the complete word to go into the next line instead. How can I achieve this? I need to use HTML text only. The text can be dynamic and has to scale across various display size and orientations, I cannot put newline char in the text.
I'd suggest you to use attribute android:ellipsize to prevent breaking up a word
Try this...it should work
mTextView.setText(Html.fromHtml("THIS USEFUL" +"<br/>"+ "INTERESTING HTML TEXT IS DISPLAYED IN ANDROID TEXT VIEW"));
How to have HTML New Line Feature in Android Text View? for more clarity
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);
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 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