Ich habe eine ImageView und darunter einen EditText. Ich möchte in der Lage sein, in den EditText zu schreiben, während ich das ImageView ansehe. Der EditText ist zu diesem Zeitpunkt nicht sichtbar. Hat jemand eine Idee, wie man das erreicht? Ich habe es mit einem TextWatcher versucht, aber das scrollTo im afterTextChanged hat nicht funktioniert.Android: Scrollen in afterTextChanged funktioniert nicht
myImageView.setImageBitmap(myImageBitmap);
TextWatcher textWatcher = new TextWatcher() {
int xBefore;
int yBefore;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
yBefore = myScrollView.getScrollY();
xBefore = myScrollView.getScrollX();
}
@Override
public void afterTextChanged(Editable s) {
myScrollView.scrollTo(xBefore, yBefore);
}
};
myEditText.addTextChangedListener(textWatcher);
Die xml sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/myScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="ch.ethz.somr.smartphonebattle.FastestCameraActivity"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myImageView"
android:scaleType="fitStart"
android:adjustViewBounds="true"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/container_input">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myEditText"
android:inputType="number"
android:hint="@string/my_hint"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
Ich habe nicht zu viel in diese, aber hier sind ein paar Punkte zu prüfen: 1. Stellen Sie sicher, dass die vor und nach Text ändern Methoden tatsächlich genannt werden 2. Wenn Ihr Ziel ist, das Bild zu halten In Anbetracht dessen könnte es am besten sein, einen "fließenden" Bearbeitungstext zu erstellen, der direkt über der Tastatur oder der virtuellen Tastatur sitzt. Dies befindet sich außerhalb Ihrer scrollView, aber immer im Blick, was Ihr Problem lösen und einfacher zu verwenden sein kann. –