How to underline the space of a string with spacing - android

In android xml how to underline the string with the spacing? If I using the underscore it will look not nicely because there are some gap between the underscore.
Example below are the underline that have gaps
Example below are the one that I looking for:

Make drawable for underscore line and set between that views.
Or use like this
TextView tv = (TextView) findViewById(R.id.tv);
tv.setText(Html.fromHtml("Go<u> </u>Travel"));
The output is :
Go_______Travel

String temp = "Go Travel"
temp=temp.replaceAll(" ", "_"); // return Go______Travel
Note that it is just the simple logic, you can obviously use many other solutions based on your application/business logic.
Hope it helps.

Related

Hide only part of text in TextView

Good Day i want to hide some specified or certain part of text in textview!Important: Im not talking about hide the full textview with TextView.setVisibility(View.Gone) I'm not talking about transparent of TEXT in textview!im not talking about hiding full text in textview!So please help me to hide some text.
Example: lets say i have a textview with this text (10-Sporting Goods)
I want to hide the (10-) and show only Sporting Goods text.Any help will be appreciated!Thank you very much beforehand!
Although even i would appreciate for your case to strongly go with DroidWorm/Gabriella approach , just for the information of all the other folks who may see this in future.
If you really wish to hide just a portion of your textview which has the entire string in itself, you should use a SpannableString , as below:-
tvHello = (TextView) findViewById(R.id.tvHello);
SpannableString customText = new SpannableString("10-Sporting Good");
customText.setSpan(new RelativeSizeSpan(.1f), 0, 3, 0);
tvHello.setText(customText);
This code will technically HIDE the 10- from 10-Sporting Good without using a substring.
You could try to get the whole text like
String text = textView.getText().toString();
and then make substring of it like this:
String wantedSubstr = text.substring(4); //for example - everything from the 4th index to the end
then set this substring as text of your textView like this:
textView.setText(wantedSubstr);
There is one the possible solution of it is that..First you have to find the index(position) of "-" and than split the string according to it therefore use below code
String text = textView.getText().toString();
int position=text.indexOf('-');
String wantedSubstr = text.substring(position+1);
textView.setText(wantedSubstr);
Will there always been "10_" in front of it? Or will there always be 3 characters before the text you want? Or will there always be a "-" or "_" before the text you want?
If so, you could just do a simple method which takes the substring and then updates the textview. If so I can help you write a simple method
You cannot hide part of textView, instead you can make a substring of the specific string and setText using it.
Do it like:
String originalString = "10-Sporting Goods";
String subString = originalString.substring(3);
textView.setText(asubstring);

How do i set equal characters in a line in a text view?

So basically by default the text view in android wraps contents because of which my text looks something like this
I'd like to disable the text wrapping property and set equal number of characters in the text view.
How do I do it?
Your question is not 100% clear but if you're talking about justification, Android doesn't support it. But here is a library which does.
If you literally don't want the text to wrap use:
android:singleline="true"
You have to use single line "true", and define the padding between the cells.
ps: to set a number of characters , you have get the refference from this textView and edit the content(just format the string).
Example:
char text[] = originalText.toCharArray();
String newText = "":
for(int i=0; i< text.length(); i++){
if(i<x){
newText =newText + text[i];
}
else{
break;
}
}
To achieve this, simply use the newline syntax "\n" where you want a new line to begin.
For example:
String text = "Who is the Boss? \n You are the Boss";
This can also be achieved programmatically of course in code if you're getting a string without one.
Simply write a method that checks for white space and insert the "\n" say after each successive 3 whitespaces have been detected. Then programmatically set the string to the TextView.
try adding this attribute to your textview and then try
android:gravity="center_horizontal

A part of textview in android to be clickable

I have to display some text in textview.
I just want the a part of the text to be clickable and the rest of the text to be normal.
Here is my code:
TextView mTextView = (TextView) findViewById(R.id.txt);
String mText = "some text.Link to click.Some more text";
SpannableString sb = new SpannableString(mText);
sb.setSpan(new ClickableSpan() {
#Override
public void onClick(View widget) {
Intent in=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.twitter.com/"));
startActivity(in);
}
}, mText.indexOf("Link"),mText.indexOf("Link") + 13,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setText(sb);
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
If you are putting the full url into the TextView you can use android:autoLink="web" to greatly simplify this process.
See the TextView docs for more
Another option is the Html object. Specifically the fromHtml() method I think will allow you to achieve what you want. You should be able to do something like this:
mTextView.setText(Html.fromHtml("blah blah some text to be linkified blah blah"));
You could also use the linkify option: http://android-developers.blogspot.com/2008/03/linkify-your-text.html - In this case, you can just build your string dynamically, and make only the part of it you want clickable.
I had never heard of the autoLink attribute - cool.
Another option, which might be closer to your original question - you could create two different TextViews next to each other (if the spacing is odd, use layout_marginRight="-8" - using a negative offset, which may require a bit of tweaking to get the spacing perfect). Then you could apply the autoLink attribute to only the TextView you want to be clickable.

Android: can't read new line from database

i've got a database with a field in var_char(2000).
in this field there's text with some new line, like a normal text written:
hello
i am davide
bye
i put this text in a textview but i see the text like a unique line (hello i am davide bye), without newlines.
in iphone it is all normal and i've done nothing particular... but here no.
how can i?
i've tried with replace \n or replace \r\n o other things but without success.
Also with Html.fromHtml()
the singleLine(false) is deprecated, and it doesn't work.
also text doesn't work. it see the newline as a space
Try setting android:singleLine="false" to your textView.
Edit:
If this does not work check whether the string has a new line character using below code
char[] chararray= mString.toCharArray();
for(char temp:chararry){
int value = temp;
System.out.println(value);
}
Decimal value of Newline is either 10 or 13. While space character is 32.
Edit2 : I think TextView does not go to next line for \r which is 13.
So do
mString = mString.replaceAll("\r","\n");
did you try changing the datatype in sqlite?, your varchar to just text? if not, try doing so maybe it'll help
Try to disable the multi-line feature of the text view.
If you created the text view from an XML file, add this attribute to the text view :
<TextView
[...]
android:singleLine="false"
[...] />
If you created the text view programmatically, try to use the following method instead :
TextView myText = [...]
myText.setSingleLine ( false );

Change Layout Of Text Created In Java [Android]

Ok right , i asked how to create a random number from 1-100 for android and i came to this
TextView tv = new TextView(this);
int random = (int)Math.ceil(Math.random()*101);
tv.setText("Your Number Is..."+ random );
What this does is create the default kinda "hello world" style text view and says "Your Number Is.... [Then Random Number]
My problem is that i cant change the layout of this text , because it is not defined in XML, if someone could tell me how to change the style , or like make the random number into a string so i could use it for any Textview layout that would be great ..
Thanks :)
If by change the style you mean the text color, text size, and you want to change them programmatically, have a look at the setTextColor and setTextSize methods.
More info here
If you want more advanced formatting to set programmatically, see this link.
The below example demonstrates how to make your text bold and italic.
tv.setText("Your Number Is..."+ random, TextView.BufferType.SPANNABLE );
Spannable myText = (Spannable) tv.getText();
myText.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC),0,myText.length(),0);
Edit:
Try the below for the android:textSize="100dp" and android:gravity="center" :
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 100);
tv.setGravity(Gravity.CENTER);
Putting it into a string is easy.
String randomAsAString = Integer.toString(random)
You can then use the XML properties of the TextView to change its formatting, such as android:textSize="30dp" or android:textColor="#900".
By the way, if you're happy with the answer to your previous question, you should go back and mark an answer as "Accepted". That gives 'reputation' points to the person whose answer you accepted and closes the question so that people don't think you're still waiting for a better answer. You can read more about reputation in the FAQ.
Edit:
You can't reference the string entirely in xml while still giving it a random number. This is because the "#string/some_string" format only allows unchangeable strings. The execption to this is using parameters, e.g. setting the string as
<string name="random_number">The random number is %d</string>
Then you could call up that string using something like
yourTextView.setText(this.getString(R.string.random_number, random))
As for your other question about setting a background to a textView, that's also easy.
yourTextView.setBackgroundDrawable(R.drawable.....)
You should take advantage of Eclipse's autocomplete feature... it makes finding these commands a lot easier. For example, simply type the name of your TextView followed by a period, pause half a second for the list of options to come up, then "setB" and it should then filter the list to the three setBackground Drawable/Resource/Color options.
tv.setText(Html.fromHtml("Your number is: <b>" + random + "</b>"));
For basic HTML text-styling tags.
You could also do something like this.
Define your string in strings.xml like:
<string name="your_number_is">Your number is <xliff:g id="number">%s</xliff:g>.</string>
Create a TextView in a layout xml:
<TextView android:id="#+id/your_number_is"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="#string/your_number_is"
android:gravity="center"
android:textSize="100dip"
/>
Then your code would look like:
TextView tv = (TextView) findViewById(R.id.your_number_is);
int random = (int)Math.ceil(Math.random()*101);
tv.setText(getString(R.string.your_number_is, random));
This will make it a lot easier when you later on would like to change your text or maybe localize your app.
if you have thead troubles use this:
new Thread(){
public void run(){
TextView v = (TextView)findViewById(R.id.mytext);
v.setText("TEST");
}
}.start();

Categories

Resources