2012-12-26 29 views
10

我目前正在開發一款三星Galaxy Tab 2作爲我的設備的應用程序。在Android的EditText上強制FullScreen

我的代碼中的XML是:

<EditText 
    android:id="@+id/analysis_text" 
    style="@style/icon_text" 
    android:imeOptions="actionDone" 
    android:inputType="textMultiLine" 
    android:onClick="onBtnClicked" 
/> 

當此代碼執行時,全屏數據輸入模式(摘錄模式)自動只在某些情況下觸發。

我希望我的用戶在編輯此控件中的文本時獲得完整的數據輸入屏幕,而不管控件的屏幕或位置如何。

此問題的另一種修改: 無論內容是什麼,我如何在我的活動中強制EditText框的全屏數據輸入模式?

+0

你試過 的android:layout_width =「fiil_parent」 機器人:layout_height =「FILL_PARENT」 –

+0

感謝烏斯曼庫爾德人,但我的情況略有不同,我有六個這樣的盒子,所以我希望他們能夠擴大到全僅當數據輸入發生時才顯示屏幕。 – skv

+0

去AutoCompleteTectView ... –

回答

5

我解決了這個問題,沒有真正解決,但找到了有效的解決方法。

解決方法是我設計了一個文本編輯器(看起來類似於全屏用戶界面),並點擊每個這些EditBox es觸發新的UI活動(使用startActivityForResult(),這樣一旦它們完成控制,返回到調用活動),編輯完成後,文本被傳回主屏幕。

我還確保那些傳輸控件的盒子不會集中注意力,以便它們立即將控制權交給新的用戶界面。

這樣我就可以實現一個取消按鈕,它現在實際上允許用戶返回而不保存他意外做出的改變。

我很樂意接受新想法,但這對我來說很有效。

守則Activity

public void onBtnClicked(View v) { 
    EditText current_text_box = (EditText) v; 

    Intent intent = new Intent(ObservationActivity.this, 
      TexteditorActivity.class); 
    intent.putExtra("start_text", current_text_box.getText().toString()); 
    intent.putExtra("start_position", current_text_box.getSelectionStart()); 
    startActivityForResult(intent, v.getId()); 
} 

代碼在XML:

<EditText 
    android:id="@+id/observation_text" 
    style="@style/icon_text" 
    android:focusable="false" 
    android:imeOptions="flagNoExtractUi" 
    android:inputType="textMultiLine" 
    android:onClick="onBtnClicked" > 
</EditText> 

要創建我使用的代碼全屏UI,你可以使用任何類似(http://android-richtexteditor.googlecode.com/

+2

這是一個絕妙的想法,我處於完全相同的狀況,我決定跟隨你的腳步:)乾杯 – Bruce

+0

這真是一個很好的解決方法。請在這裏查看我的問題。讓我知道你是否遇到過這種情況。 HTTP://計算器。com/questions/29786797/requestfocus-making-the-scrollview-to-jump-even-the-view-is-well-over-the-a –

+0

Facing 404.幫助 –

0

你能試試這個

yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(hasFocus){ 
       yourEditText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
      } 
     } 
    }); 

導入您的父級佈局的LayoutParams。你的答案也會運作良好。