How can I expand a TextView programmatically in Android? - java

I have a TextView for description and I want it to display 4 lines by default, show the ellipsis and have a little expansion button. When the expansion button is pressed, the TextView should be expanded to display its entire contents, and the other elements on the layout should move down.
To show the ellipsis I am using desc.setEllipsize(TextUtils.TruncateAt.END); and I am setting the maxLines programmattically in the onClick event of the expansion/collapse button.
This works to expand the amount of text visible in the TextView, but it does not enlarge the TextView itself and push the rest of the layout down so you can see everything on the screen. How can I achieve this?
Simply using desc.setMaxLines(4); does not work to expand the TextView itself/increase its height. I have also tried using an ObjectAnimator to set the maxLines for the TextView but that has the same effect.
Thanks in advance for the help!
EDIT:
Code in onClick for animating the expansion:
ObjectAnimator animation = ObjectAnimator.ofInt(
desc,
"maxLines",
25);
animation.setDuration(400);
animation.start();
desc.setEllipsize(null);

Related

how to make a checkbox editable when clicked in android studio

im trying to make a to do list in android studio with checkboxes, the idea is to be able to add checkboxes to a linear layout every time i press a button. this is pretty simple but i want to be able to change the checkbox text when i click on it after ive created it.
i tried to make the text box with no text and just place a plain text beside it but i havent found a way to place both of them on the same line of the linear layout. the plain text just appears on the line underneath. i would like to know if theres any way to make a custom component that would make the checkbox text editable when clicked on the text and check the box when clicked on the check box itself that i could place it in the linear layout.
this is the code ive done to add another checkbox to the linear layout:
public void click(View v)
{
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
CheckBox cb=new CheckBox(this);
cb.setLayoutParams(lparams);
cb.setText(t.getText());
this.ll.addView(cb);
}
Check the Checkbox what is it: Checkbox source
Now you know you have a "CompoundButton" , which is a Button if you look at the
source
which is a TextView if you check the source source
The EditText, which is used for editing texts it is a TextView if you check the source
So the parent it is a TextView and in your custom component you must combine the EditText added functions and values to your CheckBox. If you have time and you aren't lazy you can do it for sure, just extend the CheckBox and add the event and handling.
Solution ofered by BAHMAN is fast and simple ( but not enough elegant for me), if you want a quick result you can do that solution or based on that one:
Declare a View named "container" in .xml layout. At your code ( runtime ) first add the Checkbox. On the Click event remove the Checkbox ( if you arenn't added at .xml, but in code you can do it ) and add an Edit text, where you listen the finishing editting event. Then you remove the Edit text and put back the Checkbox. In this case you have not doubled the components and listeners.
Since it is a TODO list, can have many Checkboxes, I would choose the last solution offered by me. If you do an expensive, commercial product, than the first solution offered by me.
Instead of adding a check box to your layout you can add a horizontal linear layout or a custom view extending LinearLayout containing a CheckBox and an EditText at first set visibility of CheckBox to gone when user enters some text in EditText and presses Enter set CheckBox label equal to text of EditText then set visibility of EditText to gone and set Visibility of CheckBox to Visible. Again when a check box is clicked do similar job.
It is better for you to create a custom View (a class extending LinearLayout) and do above job in that class. and every time you need a new check box you can add this custom view to your layout instead of adding check box to your layout.

ImageButton position

I'm trying to put an ImageButton on my app. This is a sort of hidden button, is the blue rectangle. Now, i want to put this button right and down, but as you can see, i can't, because there are two space to the right and down. (Where there are the two green arrow). How can I remove that space? Thanks!
Adjust the padding of the View that contains the button.
Layout XML:
android:padding

How to set the contents of a vertical scrollview depending on what button is chosen from a horizontal scroll above?

I was just wondering if any of you guys could give me a heads up as to what this involves?
I have used ScrollViews, I know they need a LinearLayout to scroll through and that isn't the problem.
It is that there is a dynamic horizontal ScrollView containing several buttons with buttons can be added/removed.
I also have a vertical scrollview.
The GOAL is to set the contents of the vertical ScrollView depending on which button is pressed in the above horizontal ScrolLView.
Any direction/insight would be appreciated.
Cheers
In ur Horizontal scroll view U have to set tag for individual views. Then in on click event of a view u can populate the vertical scroll by required data. I thinks for ur vertical scroll u can use the listview. It will be easy to handle. Also if ur horizontal things are in more numbers then its better to use the ListView for that even..

Impossible to update the text of a textview in a RelativeLayout

I have a simple screen created in xml, the parent layout is a "relativelayout" and i have a child layout (who is also a "RelativeLayout" containing 3 textview inside).
the only thing I have to do is press a button and change the values ​​of textviews.
to change the text is obviously this:
MyTextView.SetText("Text");
the code runs perfectly, but does not refresh the text of the textviews in the layout.
but when the screen is rotated, the screen refreshes, and the label gets the correct value.
Why does this happen? Why when pressing the button I can not update the text?
I tried using "AsyncTask" and the text is not updated either.
Did something simple can be so problematic. ?
greetings.
Your code
MyTextView.SetText("Text");
Should be executed on UI thread to give effect say suppose if you want it to be updated after button click then this code should be inside your onClickButton listener of your button
Visit This Link for more details

Pressed Status propagation in Android

I have a layout with the following structure:
LinearLayout_1
ImageView
TextView
Linearlayout_2
ImageView
TextView
Some Views within LinearLayout_1 have padding and margins. I want to set a OnClickListener over LinearLayout_1 (for detecting clicks in the whole layout). But when its pressed I need all the items inside in pressed status. How can I do that? Thanks
Found a solution. The key is to use
android:duplicateParentState="true"
in the childs of the View where the clicks are listened

Categories