我在项目中使用Photoview库。我需要在Imageview中使用Zoom setPadding 。
当我使用左侧和顶部填充时,它可以完美工作。我也可以根据需要从左到上移动图像。
mPhotoView.setPadding(150, 150, 0, 0);
但是,当我应用右填充和底部填充时,它会应用填充,但不会自动从当前位置移出。
mPhotoView.setPadding(0, 0, 150, 150); //Issue here.
答案 0 :(得分:1)
在mPhotoView
中设置填充后,您需要使用requestLayout()
公共无效requestLayout()
示例代码
<?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的输出
更新
根据您的以下评论
具有FItXY比例类型的ImageView。当我应用您的代码时,无法正常工作。同样的结果。它不能自动移动为左填充。
实际上您的填充“ Right and Bottom”在起作用
设置填充后,您需要滚动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);
}
}
答案 1 :(得分:0)
您需要使用约束,将其放在ConstraintLayout
中,然后将边设置为0,或将“约束”设置为您希望其不偏移的程度。
答案 2 :(得分:0)
您可以使用“父版式”(LinearLayout
或FramLayout
)来应用填充并将ImageView
放在其中,以便其根据您的要求工作。
OR
您可以使用ScaleType
属性,以便顺利进行管理。