برای پیاده سازی همچین کاستومی بدون کتابخانه , نیاز به یک کلاس هست که از android.support.v7.widget.AppCompatTextView مشتق شده باشد و کد های لازم را در آن قرار می دهیم . این کلاس را می توانید بدون تغییر در کد های خود قرار دهید.
ExpandableTextView.java
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.Nullable;
import android.text.SpannableStringBuilder;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
import sanaebadi.ir.tandorosti.R;
public class ExpandableTextView extends android.support.v7.widget.AppCompatTextView {
private static final int DEFAULT_TRIM_LENGTH =400;
private static final String ELLIPSIS = "...";
private CharSequence originalText;
private CharSequence trimmedText;
private BufferType bufferType;
private boolean trim = true;
private int trimLength;
public ExpandableTextView(Context context) {
super(context, null);
}
public ExpandableTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView);
this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH);
typedArray.recycle();
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
trim = !trim;
setText();
requestFocusFromTouch();
}
});
}
private void setText() {
super.setText(getDisplayableText(), bufferType);
}
private CharSequence getDisplayableText() {
return trim ? trimmedText : originalText;
}
@Override
public void setText(CharSequence text, BufferType type) {
originalText = text;
trimmedText = getTrimmedText(text);
bufferType = type;
setText();
}
private CharSequence getTrimmedText(CharSequence text) {
if (originalText != null && originalText.length() > trimLength) {
return new SpannableStringBuilder(originalText, 0, trimLength + 1).append(ELLIPSIS);
} else {
return originalText;
}
}
public CharSequence getOriginalText() {
return originalText;
}
public void setTrimLength(int trimLength) {
this.trimLength = trimLength;
trimmedText = getTrimmedText(originalText);
setText();
}
public int getTrimLength() {
return trimLength;
}
}
2. قدم بعدی ایجاد یک لی اوت هست که در ان یک تگ از جنس کلاس کاستومی که از TextView مشتق شده بود رو اضافه می کنیم .
activity_main.xml
<android.support.v7.widget.CardView
android:id="@+id/third_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/second_card"
android:layout_marginBottom="2dp"
android:layout_marginEnd="12dp"
android:layout_marginStart="12dp"
android:layout_marginTop="10dp"
android:background="@color/cardview_light_background"
app:cardCornerRadius="2dp">
<sanaebadi.ir.tandorosti.manage.ExpandableTextView
android:id="@+id/txt_see_more"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="6dp"
android:textColor="@color/primaryText"
android:textSize="@dimen/check_text"
android:textStyle="bold" />
</android.support.v7.widget.CardView>
3. و در آخر هم لی اوت خود را به اکتیویتی مورد نظرش متصل می کنیم و اون کامپونتت رو گرفته و به اون یک تکست اختصاص می دیم. ایت تکست می تونه از سرور بیاد یا اینکه از لوکال داده شه !
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView txt_see_more = (TextView)findViewById(R.id.txt_see_more);
String myText="رب انار ارگانیک 330 گرمی نارنی (Narni Organic Pomegranate Molasses 330gr) انار درختی کوچکی است که ارتفاع آن تا 6 متر می رسد. این درخت بومی ایران و مناطق مجاور آن است و معمولاً در مناطق نیمه گرمسیری می روید. میوه این درخت حاوی مقدار زیادی ویتامین C، اسیدهای آلی و مواد قندی است که مصرف آن برای سلامت بدن بسیار سودمند می باشد. حتی از ریشه و ساقه درخت انار به دلیل ترکیبات تاننی و آلکالوئیدش، برای رفع انگل های روده استفاده می کنند. همچنین از انار برای درمان ورم های داخلی بدن از جمله ورم کبد، کلیه و سایر اجزای سیستم گوارشی بسیار مفید است. از میوه انار محصولات و فراورده های بسیار زیادی تولید می شود. از جمله میتوان به رب انار، آب انار، لواشک انار، مربای انار اشاره داشت. رب انار ترکیبی از آب انار، شکر و آبلیمو است که خواص مشابه به آب انار را دارا می باشد. از این رو رب انار به عنوان بهترین چاشنی تقویتی برای کلیه ها و سیستم گوارشی می توان در غذا استفاده کرد. همچنین آنتی اکسیدان فراوان در رب انار موجب کاهش استرس، کاهش فشار خون و پیشگیری از سرطان و تقویت سیستم ایمنی بدن نقش بسیار موثر می شود. جدول زیر ارزش غذایی 100 گرم رب انار را نشان می دهد. ارزش غذایی 100 گرم رب انار انرژی 290 انرژی کربوهیدرات 74.7 گرم چربی 0.1 گرم کلسیم 205 میلی گرم آهن 4.7 میلی گرم منزیم 242 میلی گرم فسفر 31 میلی گرم پتاسیم 1.4 میلی گرم سدیم 37 میلی گرم روی 0.3 میلی گرم منگز 1.5 میلی گرم از جمله فواید دیگر رب انار می توان به موارد زیر اشاره کرد: پیشگیری از سرطان تقویت سیستم ایمنی بدن کاهش سطح کلسترول خون رشد ذهنی جنین در دوران بارداری مضرات: افرادی که مزاج سرد دارند در خوردن رب انار افراط نکنند. این افراد با زیاده روی در مصرف رب انار دچار سستی معده و نفخ می شوند. گواهینامه ها: استاندارد ارگانیک اتحادیه اروپا";
txt_see_more.setText(myText);
}
}
این یک افکت زیبا بدون کتابخونه هست. می تونید استفاده کنید. موفق باشید.