2016-08-31 15 views
2

を使用して空港の提案を表示するアプリケーションがあります。私のアプリケーションは、英語とアラビア語の2つの言語をサポートしています。私はこのためdialog viewにを実装しました。次のように私が使用しているコードは次のとおりです。AutoCompleteTextViewがHuaweiデバイスで動作しない

final AutoCompleteTextView fromactv = (AutoCompleteTextView) fromDialog.findViewById(R.id.autoCompleteTextView1d); 
      final TextView no_match_tv = (TextView) fromDialog.findViewById(R.id.tv_no_match); 
      final ImageButton close  = (ImageButton) fromDialog.findViewById(R.id.ib_close); 
      fromactv.setText(null); 
      final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
      OnItemClickListener onitem=new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        // TODO Auto-generated method stub 
        imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); 
        String actvstringfrom = fromactv.getText().toString(); 

        String resource[]; 
        if(CommonFunctions.lang.equalsIgnoreCase("ar")){ 
         resource  = actvstringfrom.split(" \t "); 
         actvstringfrom = resource[0]; 
        } 

        strFromCity = actvstringfrom; 
        resource = actvstringfrom.split("-"); 
        strFromCode = resource[3]; 
        strFromCode = strFromCode.replace(" ", ""); 

        tvFromCode.setText(strFromCode); 
        tvFromCity.setText(strFromCity); 

        if(resource[1].toLowerCase().contains("all airport") || 
          resource[1].toLowerCase().contains("جميع المطار")) 
          allAirportFrom = "Y"; 
         else 
          allAirportFrom = "N"; 

        Editor editor = sharedpreferences.edit(); 
        editor.putString("strFromCode", strFromCode); 
        editor.putString("allAirportFrom", allAirportFrom); 
        editor.commit(); 

        fromDialog.dismiss(); 

       } 
      }; 
      fromactv.addTextChangedListener(new TextWatcher() { 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, 
         int count) { 

        String filter = s.toString().toLowerCase(); 
        listItems = new ArrayList<String>(); 
        for (String listItem : arrayAirportList) { 
         if (listItem.toLowerCase().contains(filter)) 
         { 
          listItems.add(listItem); 
         } 

        } 
        if (listItems.size() == 0) 
        { 
         if(no_match_tv.getVisibility() == View.GONE) 
          no_match_tv.setVisibility(View.VISIBLE); 
        } 
        else 
        { 
         if(no_match_tv.getVisibility() == View.VISIBLE) 
          no_match_tv.setVisibility(View.GONE); 
        } 
        ArrayAdapter<String> adapt = new ArrayAdapter<String>(getActivity(), 
          R.layout.tv_autocomplete, listItems); 
        fromactv.setAdapter(adapt); 
       } 

       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, 
         int after) { 
       } 

       @Override 
       public void afterTextChanged(Editable s) { 

       } 
      }); 

      fromactv.setOnItemClickListener(onitem); 
      fromDialog.show(); 

このコード名誉機器以外の携帯電話のほとんどのために正常に動作しています。問題はアラビア語版のみです。誰かそのような問題を経験したことがありますか?これをどうすれば処理できますか?

ありがとうございます!

+0

同じです... P9デバイスとヘブライ語を使用 – Vova

答えて

0

最終的には のような理由で、HUAWEIデバイスはfill_parentまたはmatch_parentに設定したときに自動完成ポップアップの幅を親の幅に設定できません。また、デバイスがRTL言語に設定されているヘブライ語またはアラビア語として。

AutoCompleteTextView field = (AutoCompleteTextView)findViewById(<YOUR_ID>); 
String manufacturer = Build.MANUFACTURER; 
if(manufacturer.equals("HUAWEI")){ 
    View parent = (View)field.getParent(); 
    int width = parent.getWidth(); 
    field.setDropDownWidth(width); 
} 

このコードは、RTLと非RTL言語の両方で正常に動作するようです: - (しかし、私が得たベストですノーとてもきれい) は私が回避策を見つけました。 B.T.W:IFをスキップすることはできますが、他のすべてのデバイスでも機能します。特定のデバイスの回避策であることを強調するために追加しました。

+0

ありがとうございます。これを試してみる。 –

関連する問題