آقا مهران دست شما درد نکنه اما یه مشکل هنوز حل نشده: انتخاب قسمتی از متن TextView
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
قابلیت انتخاب متن از TextView
مدیریت گفتگو
آخرین تغییر: 10 سال پیش
به نام خدا
چه جوری میشه قابلیت انتخاب متنی که در TextView وجود داره رو به کاربر داد و مثلا متن انتخاب شده رو کپی کرد یا به اشتراک گذاشت؟
پاسخها 5
مشاهده پاسخ صحیحسلام برای اشتراک از کد زیر استفاده کن
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, txt.getText().toString());//اینجا از تکست ویو خودت استفاده کن
Intent new_intent = Intent.createChooser(shareIntent, "Share via");
new_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
G.context.startActivity(new_intent);
//برای کپی هم از این کدClipboardManager clipboard =(ClipboardManager) getSystemService(CLIPBOARD_SERVICE);ClipData clip =ClipData.newPlainText(label, text); clipboard.setPrimaryClip(clip);
نظرات

طبق تصویر می خوام بتونم متن داخل TextView رو انتخاب کنم
نظرات
فکر نکنم بشه با تکست ویو همچین کاری کرد ولی با editText این کار امکان پذیره که به کاربر اجازه ندی تغییری تو متن ایجاد کنه ولی میتونه قسمتی از متنو انتخاب کنه
دوستان این قابلیت رو توی این اپ دیدم و برام سوال شد که این قابلیت مربوط به متریال دیزاین هست یا نه

نظرات
از API 11 به بعد میتونی از این روش استفاده کنی.
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable="true"
android:text=""/>
نظرات
من این چیزی رو که گفته بودین رو امتحان کردم و از شما ممنونم اما یه سوال دیگه چه جوری میشه دکمه اشتراک رو به گزینه های Text Selection اضافه کرد برای من روی Genymotion با انتخاب متن فقط دکمه کپی و Select All اومد
پاسخ صحیح
برای این کار شما باید خودتون یک منوی کاستوم درست کنید و دکمه Share رو به اون اضافه کنید.
<?xml version="1.0" encoding="utf-8"?>
<menuxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/action_share"
android:title="@string/share"
app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
</menu>
و بعد باید یک ActionMode جدید رو که خودتون بر اساس گزینه هایی که میخواد بسازید رو به تکست خودتون اضافه می کنید.
bodyView.setCustomSelectionActionModeCallback(new MyCallback());
اینم نمونه ی یک کلاس ActionMode
class MyCallback implements ActionMode.Callback {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
Log.d(TAG, "onCreateActionMode");
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.style, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
Log.d(TAG, String.format("onActionItemClicked item=%s/%d", item.toString(), item.getItemId()));
CharacterStyle cs;
int start = bodyView.getSelectionStart();
intend = bodyView.getSelectionEnd();
SpannableStringBuilder ssb = newSpannableStringBuilder(bodyView.getText());
switch (item.getItemId()) {
case R.id.action_share:
//add code for action share provider
return true;
}
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
}
publicvoid onDestroyActionMode(ActionMode mode) {
}
}
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات