بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

قابلیت انتخاب متن از TextView

مدیریت گفتگو
MOJTABA 11 سال پیش
آخرین تغییر: 10 سال پیش

به نام خدا

چه جوری میشه قابلیت انتخاب متنی که در TextView وجود داره رو به کاربر داد و مثلا متن انتخاب شده رو کپی کرد یا به اشتراک گذاشت؟

نظرات

MOJTABA 11 سال پیش
کسی نمیدونه؟

پاسخ‌ها 5

مشاهده پاسخ صحیح
sun.of.god.7 11 سال پیش

سلام برای اشتراک از کد زیر استفاده کن

   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);

نظرات

MOJTABA 11 سال پیش
آقا مهران دست شما درد نکنه اما یه مشکل هنوز حل نشده: انتخاب قسمتی از متن TextView
MOJTABA 11 سال پیش

select textview

طبق تصویر می خوام بتونم متن داخل TextView رو انتخاب کنم

نظرات

sun.of.god.7 11 سال پیش
فکر نکنم بشه با تکست ویو همچین کاری کرد ولی با editText این کار امکان پذیره که به کاربر اجازه ندی تغییری تو متن ایجاد کنه ولی میتونه قسمتی از متنو انتخاب کنه
MOJTABA 10 سال پیش

دوستان این قابلیت رو توی این اپ دیدم و برام سوال شد که این قابلیت مربوط به متریال دیزاین هست یا نه

لینک برنامه

نظرات

پیام 10 سال پیش

از API 11 به بعد میتونی از این روش استفاده کنی.

<TextView
android:id
="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable
="true"
android:text=""/>

نظرات

MOJTABA 10 سال پیش
من این چیزی رو که گفته بودین رو امتحان کردم و از شما ممنونم اما یه سوال دیگه چه جوری میشه دکمه اشتراک رو به گزینه های Text Selection اضافه کرد برای من روی Genymotion با انتخاب متن فقط دکمه کپی و Select All اومد
پیام 10 سال پیش

 پاسخ صحیح

برای این کار شما باید خودتون یک منوی کاستوم درست کنید و دکمه 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) {
}
}

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .