Đây là ý tưởng của tôi:
Bạn có thể đo các văn bản trivially với .length()
nếu chiều dài của nó là lớn hơn giới hạn của bạn mong muốn, hơn cắt đặt chỉ chuỗi con. Nhưng nếu bạn muốn hiển thị toàn bộ văn bản, bạn có thể triển khai onClickListener()
trên đó TextView
mà ghen tị sẽ hiển thị toàn bộ văn bản là Dialog
hoặc bất kỳ thứ gì.
Một cách tiếp cận khác mà tôi nghĩ có thể phù hợp là tạo bố cục khác nhau cho các màn hình mật độ khác nhau và sau đó thêm vào xml android:maxLines="your limit"
android:textSize="some value"
và android:maxLength="@integer/mylimit"
(giới hạn và kích thước khác nhau cho mật độ khác nhau). Vì vậy, những gì còn lại là để đo chiều dài và chỉ hiển thị các chuỗi con (hoặc văn bản mặc định)
Cái gì như:
String myText = "bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla";
String clickForMore="...Click for more";
int limit = myActivity.this.getResources().getInteger(R.integer.limit); //dont forget to declare it in your string.xml
Hãy tưởng tượng chúng ta có 3 dòng văn bản và chúng tôi chỉ được phép 2 (với tổng giá trị độ dài int limit
). Slice của văn bản của chúng tôi phù hợp với bên trong TextView
, nhưng nó không được hiển thị hoàn toàn. Chúng tôi cần thông báo cho người dùng rằng có nhiều điều cần đọc ...
myTextView.setVisibility(View.INVISIBLE);// <--- takes the space in the container
if(clickForMore.length() < myText.length() && myText.length() > limit)// <--- avoiding negative place and checking if the entire text is inside the box or there are characters leftover.
{
String temp = myText.substring(0, limit-clickForMore.length());// <-- we cutting space from currently displayed (not original string) to append the `clickForMore` string information.
myTextView.setText(temp+clickForMore);
myTextView.setVisibility(View.VISIBLE);
myTextView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// display the dialog with full text....
return false;
}
}); //<--- instantiate the click listener
}
else
{
//the text fits the box and no need to slice it, just display it straight forward
}
myText.length() > limit
- Kiểm tra xem chuỗi có trùng lặp giới hạn hay không. Triển khai .addTextChangeListener()
(TextWatcher
) và trong phương thức ghi đè afterTextChange()
thực hiện tất cả những điều tôi đã đề cập ở trên.
Sau đó, bạn tạo onClickListener()
cho số TextView
nơi bạn tạo hộp thoại và sau đó hiển thị văn bản của bạn.
Tôi hy vọng bạn tìm thấy ý tưởng này, hợp lý. Nếu bạn cần giải thích thêm những gì tôi đã có trong tâm trí cảm thấy tự do để viết cho tôi.
Nguồn
2011-08-15 01:10:23
chế độ xem đã được định cấu hình có kích thước không đổi. bây giờ tôi cần phải thay thế văn bản của nó khi nó không phù hợp. – Asahi
nếu là kích thước contant bạn có thể kiểm tra và xem có bao nhiêu biểu đồ có thể phù hợp. Nếu textize exeeds có chiều dài thay thế nó – weakwire
để thay thế tôi đang gọi 'setText' nhưng nó không ảnh hưởng đến TextView - đó là vấn đề – Asahi