Как сделать EditText сфокусированным, но не кликабельным? (Xamarin.Android) - PullRequest
0 голосов
/ 07 мая 2019

У меня есть 3 EditText:

<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:focusedByDefault="false"
   android:minWidth="25px"
   android:minHeight="25px"
   android:id="@+id/editText1" />
<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:focusedByDefault="true"
   android:clickable="false"
   android:id="@+id/editText2" />
<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:focusedByDefault="false"
   android:id="@+id/editText3" />

Я хочу, чтобы при открытии действия была сфокусирована вторая EditText (с мигающим курсором), но когда я нажимаю на нее, я надеваюне хочу, чтобы клавиатура появлялась.

1 Ответ

1 голос
/ 07 мая 2019

Вот пример, который я собрал, который работает для меня. И с помощью этого решения вы можете удалить атрибуты «focusByDefault» и «clickable» из всех ваших представлений EditText в файле макета.

public class MainActivity : AppCompatActivity, View.IOnTouchListener {

    private EditText editText2;

    protected override void OnCreate(Bundle savedInstanceState) {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.main);
        editText2 = FindViewById<EditText>(Resource.Id.editText2);
        editText2.RequestFocus();
        editText2.SetOnTouchListener(this);  // Requires addition of View.IOnTouchListener interface to class
    }

    public bool OnTouch(View v, MotionEvent e) {
        v.OnTouchEvent(e);
        var imm = (Android.Views.InputMethods.InputMethodManager)v.Context.GetSystemService(InputMethodService);
        imm?.HideSoftInputFromWindow(v.WindowToken, Android.Views.InputMethods.HideSoftInputFlags.None);
        return true;
    }
}
...