2015-03-13 4 views
12

में सुझावों को शामिल करने के लिए कैसे मैं एंड्रॉइड सॉफ़्टकेबोर्ड पर काम कर रहा हूं। मैंने कीबोर्ड के लिए लेआउट बनाया है लेकिन यह नहीं पता कि सुझावों को कैसे शामिल किया जाए जो प्रकट होते हैं यदि हम EditText में कुछ शब्द टाइप करते हैं।
उदाहरण के लिए यदि मैं "Kn" लिखता हूं तो "ज्ञात" और "ज्ञात" सुझावों में दिखाए जाते हैं।
तो मेरे प्रश्न हैं -
1) एंड्रॉइड सॉफ़्टकीबोर्ड में सुझाव कैसे शामिल करें?
2) क्या हमारे सुझावों की सूची शामिल करने का कोई तरीका है?
Thanx बहुत पहले से ही।
मैंने पहले ही this और this चेक किया है लेकिन कोई उचित उत्तर नहीं ढूंढ पाए। किसी भी सहायता की सराहना की जाएगी।एंड्रॉइड कीबोर्ड

संपादित
मैं के रूप में नीचे चित्र में दिखाया गया कीबोर्ड सीधे ऊपर सुझाव शामिल करना चाहते हैं।

Suggestions in keyboard

+0

मुझे लगता है कि आप एक [ऑटोकंपलेटटेक्स्टव्यू] (http://developer.android.com/reference/android/widget/AutoCompleteTextView.html) का उपयोग करना चाहते हैं, इसके बजाय ... –

+0

तो मैं पुष्टि करना चाहता हूं कि AutoCompleteTextView नीचे दिखाया गया है एडिटटेक्स्ट जिसमें हम टेक्स्ट दर्ज कर रहे हैं या इसे कीबोर्ड के ऊपर भी "सुझाव" के रूप में इस्तेमाल किया जा सकता है जो सीधे कीबोर्ड लेआउट – Kunal

+0

से ऊपर दिखाए जाते हैं, मुझे नहीं लगता कि एक तरीका है। मैंने पहले एक समान सवाल पूछा और कहा गया था, क्योंकि यह व्यक्तिगत कीबोर्ड और उसके कार्यान्वयन पर निर्भर है, इसे लागू करने का कोई तरीका नहीं है। (मैं इसे जोड़ने के बजाय इसे छिपाना चाहता था लेकिन यह वही सिद्धांत है)। और AutoCompleteTextView सुझावों के साथ एक कॉम्बो बॉक्स की तरह है। यह कीबोर्ड पर सुझाव नहीं जोड़ता है। – kha

उत्तर

21

आप स्थिर विधि UserDictionary.Words.addWord(....) उपयोग कर सकते हैं: Link

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
    // On JellyBean & above, you can provide a shortcut and an explicit Locale 
    UserDictionary.Words.addWord(this, "MadeUpWord", 10, "Mad", Locale.getDefault()); 
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) { 
    UserDictionary.Words.addWord(this, "MadeUpWord", 10, UserDictionary.Words.LOCALE_TYPE_CURRENT); 
} 

आप अपने प्रकट करने के लिए इस अनुमति जोड़ने की आवश्यकता होगी:

<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/> 

जोड़ा गया शब्द Settings > Language & input > Personal dictionary में दिखाई देगा।

यदि आप अपना खुद का सॉफ्ट कीबोर्ड लागू कर रहे हैं, तो मेरा सुझाव है कि आप Creating an Input Method पर जाएं। सुझाव आमतौर पर Candidates View में दिखाए जाते हैं। डिफ़ॉल्ट रूप से, InputMethodService#onCreateCandidatesView() शून्य लौटाता है। सुझाव बार के कार्यान्वयन को वापस करने के लिए आपको इस विधि को ओवरराइड करना चाहिए।

यहां एक नमूना प्रोजेक्ट है जो अभ्यर्थियों को लागू करता है: SoftKeyboard

अधिक जानकारी:

शब्द और वाक्यांश सुझावों को देखने के उम्मीदवारों में जाना। & बनाने के तरीके के बारे में जानकारी यह उपरोक्त वर्णित नमूना परियोजना में है।

जहां तक ​​मुझे पता है, शब्दों/वाक्यांशों का सुझाव देने के लिए डेवलपर की ज़िम्मेदारी है। एंड्रॉइड उन लोगों को प्रदान नहीं करता है। आपको शायद शब्दकोशों के एक सेट की आवश्यकता होगी - प्रत्येक भाषा/लोकेल के लिए जो आप समर्थन करने की योजना बना रहे हैं। आप उपयोगकर्ता द्वारा निर्दिष्ट शब्दों का शब्दकोश भी बनाए रखना चाहते हैं।

Android के डिफ़ॉल्ट कुंजीपटल इन का उपयोग करता है: Link

आप इनमें से किसी एक डाउनलोड, खोल दे और एक पाठ संपादक के साथ खुला है:

dictionary=main:en,locale=en,description=English,date=1402373178,version=47 
word=the,f=222,flags=,originalFreq=222 
word=to,f=215,flags=,originalFreq=208 
word=of,f=214,flags=,originalFreq=214 
word=and,f=212,flags=,originalFreq=212 
word=in,f=210,flags=,originalFreq=210 
.... 165,635 more lines 

के रूप में स्पष्ट, आवृत्ति निर्धारित करने में एक महत्वपूर्ण भूमिका निभाता है एक सुझाव के रूप में एक शब्द की उपयुक्तता। यदि आप ta टाइप करते हैं तो आप शायद tachometer का सुझाव नहीं देना चाहते हैं। आप शायद take का सुझाव देना चाहते हैं - आवृत्ति आपको वहां मदद करती है।

स्वचालितसुधार:

word=id,f=99,flags=,originalFreq=99 
shortcut=I'd,f=whitelist 

झंडे औचित्य से संकेत मिलता है:

word=goddamn,f=0,flags=offensive,originalFreq=62 

यहां तक ​​कि अगर आप इन शब्दकोशों उपयोग करने का निर्णय, कोड उन्हें पार्स और सार्थक सुझाव प्राप्त आप से आना होगा करने के लिए।

दो लेख (पीटर Kankowski द्वारा दोनों) के बारे में predictive text input & spelling correction बात:

Using DAWG for predictive text input

Using Ternary DAGs for Spelling Correction

CandidatesView:

पहली बात CandidatesView के बारे में पता होना चाहिए : यह वैकल्पिक है। वास्तव में, LatinIME (एंड्रॉइड का डिफ़ॉल्ट सॉफ्ट कीबोर्ड) इसका उपयोग नहीं करता है। इसके बजाए LatinIME का अपना कार्यान्वयन है - SuggestionStripView - जो समान है। InputMethodService#onCreateCandidatesView() का डिफ़ॉल्ट व्यवहार शून्य वापस करना है। यदि आप अपना खुद का कार्यान्वयन प्रदान करना चुनते हैं, तो इस विधि को ओवरराइड न करें।

आपको यह तय करने की आवश्यकता है कि आपके उम्मीदवारों को क्या दिखना चाहिए। एक संभावित कार्यान्वयन HorizontalScrollView हो सकता है। आपके सुझावों का मूल्यांकन करने के बाद (उदाहरण के लिए, उपयोगकर्ता "as" लिखना शुरू कर देता है, और आपका सुझाव-तर्क आपको List<String> देता है जिसमें "है", "था", "सहायता", "पूछें", "पूछा", "पूछना", "मान लीजिए"), & TextViews 0 स्ट्रिंग्स को HorizontalScrollView(LinearLayout) पर रखें। इस तरह, उपयोगकर्ता क्षैतिज स्क्रॉल कर सकते हैं और उस पर क्लिक करके इच्छित शब्द का चयन कर सकते हैं।

यह तय करने के लिए आप पर निर्भर है कि एपीआई का उपयोग करना है या CandidatesView स्वयं को संभालना है। यदि आप एपीआई का उपयोग करना चाहते हैं, तो InputMetodService#onCreateCandidatesView() ओवरराइड करें, अपना कस्टम लेआउट बढ़ाएं, फिर इसे वापस करें। इसके लिए एक संदर्भ रखें, ताकि जब आवश्यक हो तो आप इसे अपडेट कर सकते हैं। CandidatesView's दृश्यता को नियंत्रित करने के लिए, विधि setCandidatesViewShown(boolean) का उपयोग करें।

+0

आपके उत्तर के लिए @ विक्रम धन्यवाद लेकिन "UserDictionary" कोड यहां आप सुझाव देते हैं कि शब्दकोष में शब्दों को जोड़ना है, लेकिन मैं शब्द के प्रारंभिक अक्षर का उपयोग करके शब्दकोश से शब्द पुनर्प्राप्त करना चाहता हूं। कृपया – Kunal

+0

@ कुनल हाय कुणाल करने में मदद करें, मैंने कुछ और जानकारी जोड़ दी है। – Vikram

+0

आपके उत्तर के लिए धन्यवाद। लेकिन क्या आप कृपया अपना खुद का लेआउट जोड़ने के लिए "उम्मीदवार दृश्य" का उपयोग करने के तरीके की व्याख्या करने में मेरी सहायता कर सकते हैं। मैंने आपके उत्तर में प्रदान किया गया कीबोर्ड कोड इस्तेमाल किया लेकिन उनका कोड बहुत व्यस्त है। इसे समझने में सक्षम नहीं है। मुझे केवल थोड़ी सी मदद चाहिए, बाकी मैं इसे खुद कर दूंगा। और एक और बात अगर आप इस टिप्पणी के सवालों का जवाब देने में सक्षम नहीं हैं तो आपका उत्तर अभी भी स्वीकार्य है। – Kunal

1

यदि आप एक कस्टम कीबोर्ड बना रहे हैं, तो मेरा सुझाव है कि आप Creating Input Method पर जाएं, sample code है जिसे आप जा सकते हैं। उम्मीदवार दृश्य शायद आप जो खोज रहे हैं। यह उपरोक्त लिंक में समझाया गया है।

आप इनलाइन वर्तनी परीक्षक प्रदान करना चाहते हैं, तो आप Spellchecker framework

आशा इस मदद करता है की जाँच करने के लिए चाहते हैं।

+0

मैं वर्तनी परीक्षक नहीं जोड़ना चाहता, मैं एंड्रॉइड उपकरणों में दिए गए शब्दकोश से सुझाव जोड़ना चाहता हूं। कृपया उस पर उदाहरण दें। – Kunal

संबंधित मुद्दे