SkypeDogg
SkypeDogg

Reputation: 1040

TextView, how to display prompt for user

I need to set prompt for my TextView, if String is too long to fit inside TV (i set max length 20) then it displays only part of it with "..." at the end. I want to display prompt with full String when i click on TV. Is it possible? And if yes then how to do it?

like this, but without close button, just disappearing after short amount of time

Inside activity:

textCompany.setText(testDb.getCompanyName(id));
textCompany.setEllipsize(null);

And XML:

 <TextView
            android:id="@+id/textCompany"
            android:layout_width="match_parent"
            android:layout_below="@+id/textId"
            android:layout_height="wrap_content"
            android:maxLength="20"
            android:ellipsize="end"
            android:gravity="end"
            android:layout_marginEnd="20dp"
            android:textSize="17sp"

            android:text="verylongstringjusttotestifthisworksandletshopeitwill" />

Upvotes: 0

Views: 755

Answers (2)

Nikos Hidalgo
Nikos Hidalgo

Reputation: 3756

You can do that with a simple onClickListener. First, you check what the length of the text is, then if it's more than 20 characters, you take the first 20 and add three dots to the end and display that. At the same time, you save the full text to a temporary variable, and you display it when someone clicks your TextView.

         @Override
         protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

            final TextView textView = findViewById(R.id.textCompany);
            String shortMessage;
            final String message = textView.getText().toString();
            if(message.length() >= 20){
                shortMessage = message.substring(0,19)+"...";
                textView.setText(shortMessage);
            }
            textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();

                }
            });

        }

Note: make sure you make your textView clickable by adding the following to your xml:

android:clickable="true"

Upvotes: 1

ManishPrajapati
ManishPrajapati

Reputation: 514

The behavior you mentioned is due to

android:ellipsize="end"

It displays the end of text with "Some text..." if it does not fit in width. You can programmatically change the ellipsize value to none to display the full text on Click.

myTextView.setEllipsize(null);

Upvotes: 1

Related Questions