मैं टेक्स्ट की दिशा के आधार पर गतिशील रूप से यूआई बदलने की व्यवहार्यता के बारे में कुछ शोध कर रहा हूं। हालांकि Google आरटीएल भाषाओं का समर्थन कर रहा है (रेफरी: Native RTL support in Android 4.2) लेकिन इसमें ऐसी स्थिति शामिल नहीं है जिसमें आवेदन एलटीआर और आरटीएल सामग्री का मिश्रण हो।एंड्रॉइड में टेक्स्ट दिशा कैसे प्राप्त करें और दिशा के अनुसार गतिशील रूप से लेआउट बदलें?
Google का समाधान सही है यदि हमारे पास बहुभाषी ऐप है और इसमें विभिन्न भाषाओं में स्थिर डेटा (जैसे मेनू आइटम) के विभिन्न स्रोत हैं। हालांकि, मुझे टेक्स्ट सामग्री की दिशा के आधार पर गतिशील रूप से लेआउट को बदलने का तरीका कोई अन्य दस्तावेज़ नहीं मिला।
निम्नलिखित छवि मेरे परीक्षण ऐप के वर्तमान डिज़ाइन को दिखाती है। सूची फेसबुक (मेरे दोस्तों की सूची) से आता है और इसमें अंग्रेजी और फारसी नाम शामिल हैं।
मेरे समाधान अनुकूलक में दो लेआउट (लीटर के लिए और एक RTL के लिए) होने और हर एक नाम की दिशा के आधार बताए है।
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(position % 2 == 0)
convertView = myInflater.inflate(R.layout.list_add_friends_row, null);
else
convertView = myInflater.inflate(R.layout.list_add_friends_row_mirror, null);
holder = new ViewHolder();
holder.llSection = (LinearLayout) convertView.findViewById(R.id.section);
holder.tvUserName = (TextView) convertView.findViewById(R.id.tvUserName);
holder.ivPicture = (ImageView) convertView.findViewById(R.id.ivPicture);
holder.btnAdd = (Button) convertView.findViewById(R.id.btnAdd);
convertView.setTag(holder);
holder.btnAdd.setTag(position);
holder.tvUserName.setText(userList.get(position).getName());
imageDownloader.displayImage(holder.ivPicture, userList.get(position).getPhotoUrl());
...
return convertView;
}
और परिणाम है::
मैं के आधार पर पंक्तियों नजर आता है, तो पंक्ति सम या विषम है तो, मैं कोड के निम्नलिखित लाइनों लिखा था। अब, मेरा सवाल है कि नाम के आधार पर यूआई को मिरर कैसे करें। मुझे लगता है कि मुझे if(position % 2 == 0)
से if(isNameLTR(FIRST_CHAR_OF_NAME))
जैसे कुछ क्लॉज की स्थिति बदलनी चाहिए। मुझे नहीं पता कि इस विधि को कैसे कार्यान्वित किया जाए।
मुझे कैसे पता चलेगा कि एलटीआर ओटी आरटीएल है? (मुझे लगता है कि एंड्रॉइड जानता है कि शब्द का पहला अक्षर आरटीएल या एलटीआर है, यही कारण है कि जब टेक्स्ट व्यू की चौड़ाई मिलान होती है तो यह वर्ण सही होता है यदि चरित्र आरएलटी है और यदि चरित्र एलटीआर है तो छोड़ दिया जाता है)।
कोई भी सुझाव या टिप्पणियों की सराहना की जाएगी। धन्यवाद