2014-03-01 77 views
0

在搜索解決方案時,我一直非常疲憊,以將建議列表放在鍵盤前。自動完成TextView建議列表位於鍵盤後面

Suggestion List is behind Keyboard

有鍵盤的背後更多的建議。 我希望能夠看到這些建議,當我觸摸/滾動此列表通過將列表在鍵盤前。 我檢查了許多類似的問題,但沒有任何希望有效地這樣做。 在THIS QUESTION上提出的建議不能解決所有設備的問題。 我也看到了THIS QUESTION但它沒有幫助解決問題。

有沒有什麼建議如何解決這個問題。

+0

我從來沒有見過開發者必須在軟鍵盤上放置這樣的下拉菜單。我要冒昧地說,不能/不應該試圖解決這個問題。您發佈的第二個問題鏈接的第二個答案似乎是最好的方式(顯示軟鍵盤自動填充中的選項)。 –

回答

0

這是由於佈局問題。基本上你的鍵盤有焦點,因爲用戶正在寫信,但你想顯示下拉列表。但是,如果您看到下拉列表,則不會看到鍵盤,用戶每次想要繼續寫作時都必須關注EditText。所以基本上你看到的行爲是正確的IMO。

你有2個選擇這裏:

1)更改您的佈局,幫助中心從屏幕的最上方顯示,並具有足夠的高度,以顯示其所有建議。

2)限制要顯示的下拉項目。由於沒有本地方式來實現這一點,因爲沒有maximumSuggestions選項,您可以獲取其中一行的高度並將其乘以X倍(即X顯示的行數)並使用setDropDownHeight()來設置其高度。更多關於這個here的信息。

-1
public View getView(final int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = inflater.inflate(viewResourceId, parent, false); 
     holder = new ViewHolder(); 
     init(convertView, holder); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    convertView.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       InputMethodManager imm = (InputMethodManager) getContext() 
         .getSystemService(
           Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(
         searchView.getWindowToken(), 0); 
      } 

      return false; 
     } 
    }); 

    setView(position, holder); 
    return convertView; 
} 
+0

您應該提供解釋以及您的代碼,並確保其格式正確... – tmthydvnprt

+0

解釋在哪裏? – Blake