Android 如何将视图放置在ImageView的顶部,与ImageView';什么是内容大小? 背景
假设我想用ImageView显示某物的图像,并且我想在其顶部放置新视图(例如,在世界地图图像上显示管脚的动画ImageView,或者在智能手机图像顶部放置开关视图) 这意味着,无论ImageView如何显示图像,视图都应该位于图像中,位于正确的点内,具有与指定相同的大小,或者与ImageView本身相关的大小 问题 与其他视图不同,ImageView可以具有一定的大小,但其内容是其他内容(以保持纵横比) 我试过的 我尝试使用ConstraintLayout,但这并没有真正的帮助,因为ImageView可以更改其大小(例如,在更改方向时),从而破坏了与ImageView相比我给出的视图的位置 我发现一些库可以处理类似的事情(比如),我甚至在()之前问过类似的问题,但所有这些解决方案都是针对ImageView中的静态图像,而我搜索的是在ImageView上添加一个视图 问题 如何将视图正确放置在ImageView内容的顶部 与ImageView内容的大小相比,如何将视图向下/向上缩放Android 如何将视图放置在ImageView的顶部,与ImageView';什么是内容大小? 背景,android,imageview,Android,Imageview,假设我想用ImageView显示某物的图像,并且我想在其顶部放置新视图(例如,在世界地图图像上显示管脚的动画ImageView,或者在智能手机图像顶部放置开关视图) 这意味着,无论ImageView如何显示图像,视图都应该位于图像中,位于正确的点内,具有与指定相同的大小,或者与ImageView本身相关的大小 问题 与其他视图不同,ImageView可以具有一定的大小,但其内容是其他内容(以保持纵横比) 我试过的 我尝试使用ConstraintLayout,但这并没有真正的帮助,因为ImageV
是否可以使用ConstraintLayout根据ImageView的大小更改视图的比例 使用
wrap\u内容制作FrameLayout
,ImageView
。然后您可以在ImageView
的顶部设置SwitchView
。您可以将其对齐到中心、边或角,并使用边距获得一些精细的位置
它仍然无法与图像缩放,但您可以获得相当好的结果。如果这不适合您,您可以通过编程获得ImageView
的宽度/高度,并相应地更改SwitchView
的位置(或边距)。是否显示位于ImageView上的开关
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_download"
android:layout_width="100dp"
android:layout_height="60dp"
android:layout_centerInParent="true"
android:orientation="vertical">
<ImageView
android:src="@android:drawable/btn_star_big_on"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Switch
android:id="@+id/mySwitch"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Switch" />
</RelativeLayout>
使用下面的内容,您可以根据图像视图宽度管理交换机或任何其他视图的宽度
android:layout_alignLeft="@+id/imageView"
android:layout_alignRight="@+id/imageView"
据我所知,您需要图像视图中显示的图像大小,并将其设置为开关视图的最大宽度,对吗
为此,您需要Java和XML
XML文件基本上与视图按需要堆叠在一起
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/nonet_icon"
android:id="@+id/iconView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<android.support.v7.widget.SwitchCompat
android:layout_width="wrap_content"
android:visibility="gone"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/switchView"/>
</RelativeLayout>
Ref:获取ImageView的显示图像大小
参考:
如果你需要详细的解释,请发表评论
例如:
图像缩放视图:在Java中
ImageView imgView = (ImageView) findViewById(R.id.imageView);
imageView.setBackgroundResource(R.drawable.yourDrawable);
int width = imgView.getDrawable().getIntrinsicWidth();
Switch switchKey = (Switch) findViewById(R.id.switchKey);
switchKey.setMinimumWidth(width);
在XML中,将其与alignLeft和alignRight与ImageView对齐。您可以使用带有相对布局的MarginLayoutParams
在ImageView中设置左侧和顶部位置
image = (ImageView) findViewById(R.id.imageID);
MarginLayoutParams marginParams = new MarginLayoutParams(image.getLayoutParams());
marginParams.setMargins(left_margin, top_margin, right_margin, bottom_margin);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
image.setLayoutParams(layoutParams);
请在下面的链接中找到此项的完整信息:
试试这个,可能会对你有所帮助
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/img_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/semi_transparent"
android:layout_margin="@dimen/spacing_small"
android:layout_alignTop="@+id/img_background"
android:layout_alignBottom="@id/img_background">
//this layout will expand according to your image size
</RelativeLayout>
</RelativeLayout>
//此布局将根据图像大小展开
设置开关的布局参数
,它们应该是android.widget.FrameLayout.LayoutParams
,您将从映射从getImageMatrix
方法返回的矩阵中获得值我不知道类似的问题,我刚刚为您提供了一个如何布局开关
视图的解决方案,使其始终覆盖ImageView
的某个部分,无论它有多大,大小如何uses@pskink很遗憾,我不知道如何使用你的解决方案,由于您的解决方案缺少代码,因此我无法在Internet上找到它。请查看并查找在哪里使用了mDrawMatrix
,它应该解释什么是“ImageMatrix”for@pskink你错了,把ImageView的源代码放在这里与问题无关。作为一个类比示例,如果我问您如何为RecyclerView设置适配器,您会给我RecyclerView的代码。或者,如果我想询问如何在Linux上显示当前路径的文件列表,您可能会给我Linux的代码(甚至比向我显示“manls”更糟糕)。这种回答是不好的,人们会称之为“拖拉”。如果你不知道答案,最好避免这样写。它不会根据ImageView的内容进行缩放和移动,正如我所写的,因此这不是一个好的解决方案。获取高度和宽度将得到相同的结果。我需要根据ImageView的内容设置开关的大小和位置,而不是ImageView本身的大小。请仔细阅读问题。开关应位于顶部,但也应与ImageView的内容相关。例如,在您的图像中,尝试将开关置于星形的右端,无论星形有多小或多大,并使开关根据星形的大小更改其大小。如果这是相对长度,则这是错误的,因为我所问的是对齐开关(以及可选地调整开关大小)和其他视图与ImageView显示的内容相比(这意味着它取决于ScaleType和对ImageView施加的周围限制),而不仅仅是ImageView的边界框。相对于ImageView的内容,将视图放在ImageView顶部特定位置的部分在哪里?例如,将视图设置为imageView内容大小的20%x25%,并将其放置在与imageView内容相比的30%x35%位置。视图通过XML文件添加到相对布局中。有关详细信息,请检查XML文件。就缩放而言:可以根据需要缩放视图://缩放视图
mSwitchCompat.setScaleX(0.2f)代码>mSwitchCompat.setScaleY(0.25f)代码>int-imageWidth=mImageView.getDrawable().getIntrinsicWidth()
//在customlocation上设置它
mSwitchCompat.setSwitchMinWidth(Math.round(imageWidth/30))代码>选中编辑,自定义
image = (ImageView) findViewById(R.id.imageID);
MarginLayoutParams marginParams = new MarginLayoutParams(image.getLayoutParams());
marginParams.setMargins(left_margin, top_margin, right_margin, bottom_margin);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
image.setLayoutParams(layoutParams);
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/img_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/semi_transparent"
android:layout_margin="@dimen/spacing_small"
android:layout_alignTop="@+id/img_background"
android:layout_alignBottom="@id/img_background">
//this layout will expand according to your image size
</RelativeLayout>
</RelativeLayout>