2015-03-04 2 views
0

Это всего лишь небольшое тестовое приложение/программа, над которой я работаю, и планирую добавить в большее приложение.Как принудительно сфокусировать на editText нажатием кнопки

У меня есть текст редактирования, который не доступен для клика или фокусировки. Я думаю, что это единственный способ сделать так, чтобы он не открывал клавиатуру прикосновением. Мягкая клавиатура появляется с нажатием кнопки и позволяет редактировать текст редактирования. Я хочу, чтобы editText стал сфокусированным (подчеркивание становится синим), как только нажимается кнопка, так что пользователь знает, что они находятся в поле. На данный момент, только когда они начинают печатать, подчеркивание становится синим. Я чувствую, что упускаю что-то очевидное.

Кроме того, в зависимости от того, как я выхожу из приложения, иногда, когда я возвращаюсь к нему, когда я нажимаю кнопку, сама кнопка получает фокус, и всякая типизация не появляется в editText.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="${relativePackage}.${activityClass}" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="110dp" 
     android:onClick="showKeyboard" 
     android:text="Button" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="37dp" 
     android:ems="10" 

     android:clickable="FALSE"> 

     <requestFocus /> 
    </EditText> 

</RelativeLayout> 

JAVA

package com.example.textfield; 

    import android.app.Activity; 
    import android.content.Context; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.view.inputmethod.EditorInfo; 
    import android.view.inputmethod.InputMethodManager; 
    import android.widget.Button; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 

    Button btn; 
    TextView txt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btn = (Button) findViewById(R.id.button1); 
     txt = (TextView) findViewById(R.id.editText1); 
     txt.setFocusable(false); 
     txt.setClickable(false); 
     //txt.setImeOptions(EditorInfo.IME_ACTION_DONE); 


    } 

    public void showKeyboard(View v) { 

     txt.setFocusable(true); 
     txt.requestFocus(); 
     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 



     } 
    } 

ответ

0

вопрос здесь похож, пожалуйста, прочитайте

https://stackoverflow.com/a/14327901/4555911

Так что ваш код должен выглядеть следующим образом

Main_activity.xml

... 
android:onClick="Clicked" 
/> 
... 

и MainActivity.java

public class MainActivity extends Activity{ 

        Button btn; 
        Edittext txt; 


        @Override 
        protected void onCreate(Bundle savedInstanceState) { 

         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main); 

         btn = (Button) findViewById(R.id.button1); 
         txt = (EditText) findViewById(R.id.editText1); 

         //txt.setImeOptions(EditorInfo.IME_ACTION_DONE); 


      } 

    public void Clicked(View view) 
     { 

          getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
//txt.requestfocus(); 

     } 
    } 
+0

Я хочу EditText не быть интерактивными, я хочу только клавиатура, чтобы показать, когда кнопка нажата. Мой код работает как таковой, я просто сосредоточился на одной крошечной вещице; когда нажимается кнопка и появляется клавиатура, я хотел бы, чтобы эта маленькая часть подчеркивания в editText стала синей, вместо того, чтобы оставаться серым ... Я полагаю, что я мог бы установить цвет этого, чтобы он стал синим при нажатии кнопки. – spacemonkey

+0

Я обновил свой ответ, и теперь, когда вы нажимаете на кнопку, клавиатура появится, но вы не сможете сосредоточиться на текстовом редакторе используйте http://stackoverflow.com/a/17673648/4555911, чтобы применить разные цвета к тексту подчеркивание – eiipaw

Смежные вопросы