Вам необходимо использовать requestLayout()
после установки заполнения в вашем mPhotoView
public void requestLayout ()
- Вызывайте это, когда что-то изменилось, что сделало недействительным макет этого представления. Это запланирует проход макета дерева представления.Это не должно вызываться, пока иерархия представления находится в данный момент на этапе макета (isInLayout (). Если макет происходит, запрос может быть выполнен в конце текущего этапа макета (и затем макет будет выполнен снова) или после текущегорисуется рамка и появляется следующая раскладка.
ОБРАЗЕЦ КОДА
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorAccent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:onClick="ClickMe3"
android:text="Remove Padding " />
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/photo_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:onClick="ClickMe"
android:text="left and top " />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:onClick="ClickMe2"
android:text="right and bottom " />
</RelativeLayout>
Код активности
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.github.chrisbanes.photoview.PhotoView;
public class MainActivity extends AppCompatActivity {
PhotoView mPhotoView;
boolean flag = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPhotoView = (PhotoView) findViewById(R.id.photo_view);
mPhotoView.setImageResource(R.drawable.dishu);
}
public void ClickMe(View view) {
mPhotoView.setPadding(150, 150, 0, 0);
mPhotoView.requestLayout();
}
public void ClickMe2(View view) {
mPhotoView.setPadding(0, 0, 150, 150);
mPhotoView.requestLayout();
}
public void ClickMe3(View view) {
mPhotoView.setPadding(0, 0, 0, 0);
mPhotoView.requestLayout();
}
}
Пожалуйста, проверьте вывод кода выше https://www.youtube.com/watch?v=828XI6ydNdY
ОБНОВЛЕНИЕ
согласно вашему комментарию ниже
My ImageView with FItXYscaletype. Когда я применяю ваш код, Не работает. Тот же результат. Он не может двигаться автоматически, как отступ слева.
На самом деле ваш отступ справа и снизу работает после установки заполнения, вам нужно прокрутить mPhotoView
Как показано ниже код
public class MainActivity extends AppCompatActivity {
PhotoView mPhotoView;
RelativeLayout rootView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rootView = findViewById(R.id.rootView);
mPhotoView = (PhotoView) findViewById(R.id.photo_view);
mPhotoView.setImageResource(R.drawable.dishu);
}
public void Left_Top(View view) {
mPhotoView.setPadding(150, 150, 0, 0);
mPhotoView.requestLayout();
}
public void Right_Bottom(View view) {
mPhotoView.setPadding(0, 0, 150, 150);
mPhotoView.requestLayout();
// after setting padding scroll your mPhotoView to bottom
mPhotoView.scrollTo(150,150);
}
public void ClickMe3(View view) {
mPhotoView.setPadding(0, 0, 0, 0);
mPhotoView.requestLayout();
mPhotoView.scrollTo(0,0);
}
}