我创建了自定义linearlayout并进行了缩放,我在垂直方向上使用ImageView添加图像。要在我使用ScrollView和HorizontalScrollView的图像之间滚动。我的问题是当我缩放自定义线性布局时,滚动视图大小未调整,自定义线性布局的顶部和底部被剪裁。我不知道我的逻辑出错了。我没能找到使用谷歌的解决方案。请在下面的链接中找到我的应用程序,并让我知道您的建议以解决此问题。 SampleApp
答案 0 :(得分:0)
如果您想使用ScrollView
并在图片上垂直放置图片,则需要为每个{{1}在HorizontalScrollView
内创建ScrollView
和LinearLayout
}}
并且您的比例设置为ImageView
,当缩放一个图像时,所有其他图像将在同一时间缩放。我认为你需要做的是缩放每个图像。然后你可以在每个LinearLayout
上实现,例如创建一个
ScaleImageView
由于您要在ImageView
中显示ImageView
的列表,您可以编写如下代码:
LinearLayout
代码背后:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:fillViewport="true"
android:id="@+id/sv">
<HorizontalScrollView android:layout_height="match_parent"
android:layout_width="match_parent"
android:fillViewport="true"
android:id="@+id/hsv">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root" />
</HorizontalScrollView>
</ScrollView>
为避免private List<int> imageList = new List<int> { Resource.Drawable.image1, Resource.Drawable.image2, Resource.Drawable.image3, Resource.Drawable.image4 };
private LinearLayout root;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
root = FindViewById<LinearLayout>(Resource.Id.root);
root.SetClipChildren(false);
for (int i = 0; i < imageList.Count; i++)
{
Bitmap bitmap = BitmapFactory.DecodeResource(this.Resources, imageList[i]);
var lp = new LinearLayout.LayoutParams(bitmap.Width, bitmap.Height);
lp.SetMargins(0, 2, 0, 2);
lp.Gravity = Android.Views.GravityFlags.Center;
ScaleImageView img = new ScaleImageView(this, null);
img.SetImageBitmap(bitmap);
img.SetScaleType(ScaleType.Matrix);
root.AddView(img, i);
}
}
和ScrollView
之间发生冲突,请修改Zoom
OnTouchEvent
,如下所示:
ScaleImageView