اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته, أنا حاليا أعمل على تطبيق أدمن لتطبيقي الاخر على الـFireBase. وفي هذا التطبيق لدي عدة أنواع من الـ Edit Texts, ومن ضمنها Edit Text لكتابة المقالات وأظهارها في  String موجود في الفايربيس وايضا أظهارها في Text view موجودة تحت نفس الـEdit Text. أنا أريد أن أضيف خاصية hyperlink لأي كلمه أريدها من هذا الـEdit Text واربط معها رابط كل ما يضغط المستخدم عليها يوجهه الى متصفح الانترنت مع الرابط الموجود بالكلمة في text view.. أنا الأن أعرف كيف اجل الكلمات تأخذ خاصية الـ Bold لكن لا أعرف كيف أربطها مع Hyperlink..

مع العلم انا جربت هذه "المكتبة" لكن لا تعطيني الذي انا اريدة..

My Fragment 

class MainFragment : Fragment() {

var num = 1
var string = ""

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_main, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    val article = view.findViewById<EditText>(R.id.article_edit)
    val boldBtn = view.findViewById<ImageView>(R.id.bold_button)
    val linkBtn = view.findViewById<ImageView>(R.id.linkBtn)
    val text = view.findViewById<TextView>(R.id.text)
    val linkString = view.findViewById<TextView>(R.id.link_string)
    val linkUrl = view.findViewById<TextView>(R.id.LinkUrl)
    val savelinkBtn = view.findViewById<Button>(R.id.saveLinkBtn)


    linkString.visibility = View.GONE
    linkUrl.visibility = View.GONE
    savelinkBtn.visibility = View.GONE

    boldBtn.setOnClickListener {
        val spannableString = SpannableString(article.text)
        spannableString.setSpan(
            StyleSpan(Typeface.BOLD), article.selectionStart, article.selectionEnd, 0
        )
        article.setText(spannableString)
        text.text = article.text

        string = article.text.toString()
    }
    linkBtn.setOnClickListener {

        if (num == 1) {
            linkString.visibility = View.VISIBLE
            linkUrl.visibility = View.VISIBLE
            savelinkBtn.visibility = View.VISIBLE

            num = 0
        } else {
            linkString.visibility = View.GONE
            linkUrl.visibility = View.GONE
            savelinkBtn.visibility = View.GONE
            num = 1
        }
        savelinkBtn.setOnClickListener {
           text.text = string
            linksToText(string)
            
        }

    }

}

fun linksToText(link: String) {
    var Link = Link(link)
        .setOnClickListener {
            Toast.makeText(context, "clicked", Toast.LENGTH_SHORT).show()
        }

    val article = requireView().findViewById<EditText>(R.id.article_edit)
    val text = requireView().findViewById<TextView>(R.id.text)

    article.applyLinks(Link)
    text.applyLinks(Link)

}

 

Recommended Posts

  • 1
نشر (معدل)

وعليكم السلام,
يجب أن تستعدي مكتبة android.text.method.LinkMovementMethod ومن ثم تقوم بتنفيذ إجرائية setMovementMethod والتي تأخذ باراميتر linkMovementMethod.getInstance() 
 من ثم تقوم بتعريف متحول String وقيمته هي الرابط بواسمة anchor من HTML وقيمة الhref فيها هو الرابط, وتمرر هذا المتحول إلى إجرائية html.fromHTML كما في المثال أدناه.

ملاحظة: قد تحتاج إلى تفعيل خاصية clickable للtextView.

TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));
 
لقراءة الخطوات بشكل تفصيلي يمكنك متابعة المقال التالي:
https://www.geeksforgeeks.org/how-to-add-hyperlink-to-textview-in-android/
تم التعديل في بواسطة محمد يمان ويس
  • 0
نشر
بتاريخ 19 ساعات قال محمد يمان ويس:

وعليكم السلام,
يجب أن تستعدي مكتبة android.text.method.LinkMovementMethod ومن ثم تقوم بتنفيذ إجرائية setMovementMethod والتي تأخذ باراميتر linkMovementMethod.getInstance() 
 من ثم تقوم بتعريف متحول String وقيمته هي الرابط بواسمة anchor من HTML وقيمة الhref فيها هو الرابط, وتمرر هذا المتحول إلى إجرائية html.fromHTML كما في المثال أدناه.

ملاحظة: قد تحتاج إلى تفعيل خاصية clickable للtextView.


TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));
 
لقراءة الخطوات بشكل تفصيلي يمكنك متابعة المقال التالي:
https://www.geeksforgeeks.org/how-to-add-hyperlink-to-textview-in-android/

أجابتك تعمل على نوع Edit text فقط ولا تتفعل اذا ارسلت القيمة الى Text view من الـ Edit text وكذلك نوع متغير text لديك خاطئ -  الي عمل معي ونقلها الى الاديت تيكست هو هذا: 

String text = "<a href=\"http://www.google.com/\"> Google </a>";

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...