Android Edittext 不能专注于 API 22(代码在 API 23 及更高版本上工作正常)
Android Edittext can't be focused on API 22 (code works fine on API 23 and higher)
我有一个应用程序,它从 EditText 获取信息,并在按下 Button 后使用其中的字符串。
我的应用程序在 api23 和更高版本上运行良好,但在 api22 上无法聚焦 EditText。
我不明白发生了什么。
我用android:focusableInTouchMode="true"android:focusable="true",
尝试使用 EditText.setSelected(true), EditText.setFocusable(true);
但没有任何结果。
申请使用风格"AppTheme" parent="Theme.AppCompat.Light.NoActionBar"
XML-文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backgr"
tools:context=".MainActivity">
<EditText
android:id="@+id/textForParsing"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hintInRequest"
android:inputType="textPersonName"
android:textAlignment="center"
android:textIsSelectable="true"
android:textSize="30dp"
android:textStyle="italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:windowSoftInputMode="adjustPan"
android:focusableInTouchMode="true"
android:focusable="true"
/>
<Button
android:id="@+id/buttonForParsing"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="44dp"
android:text="@string/Find"
android:textSize="18dp"
android:textStyle="bold"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textForParsing" />
</androidx.constraintlayout.widget.ConstraintLayout>
Code.java
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
String textFromEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.textForParsing);
editText.setSelected(true);
editText.setFocusable(true);
button = findViewById(R.id.buttonForParsing);
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
textFromEdit = editText.getText().toString();
};
button.setOnClickListener(onClickListener);
}
我找到了答案。 API 22 中的 Edittext 存在 android:textIsSelectable="true" 等属性的问题。没有它,该应用程序也能正常工作。
我有一个应用程序,它从 EditText 获取信息,并在按下 Button 后使用其中的字符串。 我的应用程序在 api23 和更高版本上运行良好,但在 api22 上无法聚焦 EditText。 我不明白发生了什么。
我用android:focusableInTouchMode="true"android:focusable="true", 尝试使用 EditText.setSelected(true), EditText.setFocusable(true); 但没有任何结果。 申请使用风格"AppTheme" parent="Theme.AppCompat.Light.NoActionBar"
XML-文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backgr"
tools:context=".MainActivity">
<EditText
android:id="@+id/textForParsing"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hintInRequest"
android:inputType="textPersonName"
android:textAlignment="center"
android:textIsSelectable="true"
android:textSize="30dp"
android:textStyle="italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:windowSoftInputMode="adjustPan"
android:focusableInTouchMode="true"
android:focusable="true"
/>
<Button
android:id="@+id/buttonForParsing"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="44dp"
android:text="@string/Find"
android:textSize="18dp"
android:textStyle="bold"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textForParsing" />
</androidx.constraintlayout.widget.ConstraintLayout>
Code.java
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
String textFromEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.textForParsing);
editText.setSelected(true);
editText.setFocusable(true);
button = findViewById(R.id.buttonForParsing);
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
textFromEdit = editText.getText().toString();
};
button.setOnClickListener(onClickListener);
}
我找到了答案。 API 22 中的 Edittext 存在 android:textIsSelectable="true" 等属性的问题。没有它,该应用程序也能正常工作。