2012-03-18 22 views
8

Tôi muốn mở bàn phím mềm trên khi Hoạt động bắt đầu và tôi thấy rằngandroid: windowSoftInputMode = "stateVisible" không hoạt động

android:windowSoftInputMode="stateVisible" 

không hoạt động.

Để chắc chắn, tôi tạo ra một dự án mới (mặc định "Hello world") và đã làm như sau:

  1. thêm windowSoftInputMode để manifest.
  2. Sau đó không làm việc, tôi đã thêm một trường EditView để bố trí
  3. Sau đó không làm việc, tôi đã thêm

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) thủ tục onCreate.

Tôi đã biên dịch nó bằng Android2.3.3 và cố gắng chạy trên thiết bị Galaxy S2 và trình giả lập Android4 và vẫn không có bàn phím.

file manifest của tôi:

<?xml version="1.0" encoding="utf-8"?> 

<uses-sdk android:minSdkVersion="9" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name"> 
    <activity 
     android:name=".HelloworldActivity" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateVisible"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

bố trí main.xml của tôi:

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <requestFocus /> 

</EditText> 

Mã của tôi:

public class HelloworldActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

    } 
} 
+0

Tôi nghĩ 'android: windowSoftInputMode' là thuộc tính phần tử/thẻ 'hoạt động'. – Deucalion

+0

Bạn nói đúng - tôi đã thay đổi nó. Vẫn không có bàn phím. –

+0

bạn đã làm gì? cuối cùng nó có được giải quyết không? – Kenji

Trả lời

2

Bạn có sử dụng bàn phím android mặc định không? Nếu bạn làm vậy, hãy thử nó trên một thiết bị khác, tôi biết nó có một số vấn đề

+0

Bạn nói đúng. Sau khi tôi cài đặt bàn phím ngoài trên thiết bị của mình, bằng cách nào đó, KB mặc định của tôi đã biến mất khỏi cài đặt thiết bị. dường như nó là một vấn đề đã biết và nó cũng ảnh hưởng đến điều này. Tôi đã sử dụng một thiết bị khác và hoạt động của nó. Tôi vẫn không biết tại sao trình giả lập không hiển thị KB. –

1

Như tôi đã tìm thấy here, bạn có thể hiển thị bàn phím khi hoạt động bắt đầu bằng cách làm như sau:

EditText editText = (EditText) findViewById(R.id.editText1); 
    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); 

tôi đã thay đổi mẫu mã của họ để có ID của EditText, do đó bạn phải làm việc

0

Bạn có thể f orce đầu tiên tập trung vào chế độ xem EditText bằng cách chạy:

final EditText edit = (EditText) findViewById(R.id.editText1); 
edit.post(new Runnable() { 
    @Override 
    public void run() { 
     edit.requestFocus(); 
    } 
}); 

Điều này sẽ mở bàn phím khi bắt đầu hoạt động.

+0

Không cần phải tạo chuỗi không cần thiết. Chỉ cần nhìn thấy câu trả lời của tôi cho giải pháp. –

+0

bài viết không tạo ra một chủ đề mới, nó thêm một runnable vào hàng đợi của khung nhìn, nó hoàn toàn hiệu quả. Tôi vẫn đi với giải pháp của mình, có vẻ tao nhã hơn với tôi. – marmor

+0

Có chắc chắn. Nó cũng hoạt động tốt. Thưởng thức mã hóa. –

3

Điều đơn giản của nó. Tôi đã thực hiện nó và nó hoạt động theo yêu cầu của bạn.

  1. Đừng làm bất cứ điều gì với tệp kê khai, hãy để nó như khi bạn tạo dự án mới.

  2. Bây giờ, hãy xác định trình quản lý nhập liệu.

    public static InputMethodManager imm; 
    imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); 
    
  3. Hiện tại, ở đây mức lương EditText là EditText của tôi và tôi đang hiển thị bàn phím khi bắt đầu hoạt động đó.

    salaryEditText.setHint("select Salary/Wage"); 
    
    salaryEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)}); // Ignore this line 
    
    if(!(imm==null)) 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,1); 
    

Điều đó sẽ giúp bạn để hiển thị bàn phím trong khi bắt đầu hoạt động.

Để đóng bàn phím khi kết thúc hoạt động, hãy xem bên dưới mã:

trắng mã này trong khi bạn hoàn thành hoạt động.

imm.hideSoftInputFromWindow(salaryEditText.getWindowToken(), 0); 

Hy vọng nó sẽ giải quyết được vấn đề của bạn. Nếu không thì hãy cho tôi biết.

Tận hưởng. :)

+0

Tôi có cùng một vấn đề và điều này không hoạt động. – Kenji

+0

@kenji Tôi đề nghị bạn hãy làm theo câu trả lời được chấp nhận nếu câu trả lời này không hiệu quả cho bạn. –

Các vấn đề liên quan