相当于android的代码:Croptoppadding
在我的android应用程序中,我通过以下方式创建xml缩略图:相当于android的代码:Croptoppadding,android,imageview,Android,Imageview,在我的android应用程序中,我通过以下方式创建xml缩略图: <ImageView android:id="@+id/my_thumbnail android:layout_width="50dp" android:layout_height="50dp" android:background="@color/white" android:padding="2dp" andro
<ImageView android:id="@+id/my_thumbnail
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@color/white"
android:padding="2dp"
android:scaleType="fitXY"
android:cropToPadding="true" />
请注意,该文件包含根元素和几个其他元素。然而,所有其他文件都只是引用的表单布局xml文件
然后,我在网格视图适配器中添加了以下代码:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
XmlPullParser parser = mContext.getResources().getXml(R.style.GridImage);
AttributeSet attributes = Xml.asAttributeSet(parser);
imageView = new ImageView(mContext, attributes);
// ... some more initialisation
} else {
imageView = (ImageView) convertView;
}
// ... code to create the bitmap and set it into the ImageView goes here
}
这编译得很好,即存在R.style.GridImage。但是,当我运行这段代码时,应用程序在getXmlR.style.GridImage上因Resources.NotFoundException而崩溃
有什么建议吗?您可以从ImageView本身获取缩略图。在每个imageview上调用getDrawingCache以获取用于绘制的位图 最新更新: 在xml文件夹中创建一个xml myimage_attrs.xml,并向其中添加所需的所有imageview属性
<?xml version=”1.0″ encoding=”utf-8″?>
<item name=”android:layout_height”>10dp</item>
<item name=”android:layout_width”>10dp</item>
<item name="android:background">@color/white</item>
<item name="android:padding">2dp</item>
<item name="android:cropToPadding">true</item>
<item name="android:typeface">monospace</item>
....
您可以从ImageView本身获取缩略图。在每个imageview上调用getDrawingCache以获取用于绘制的位图 最新更新: 在xml文件夹中创建一个xml myimage_attrs.xml,并向其中添加所需的所有imageview属性
<?xml version=”1.0″ encoding=”utf-8″?>
<item name=”android:layout_height”>10dp</item>
<item name=”android:layout_width”>10dp</item>
<item name="android:background">@color/white</item>
<item name="android:padding">2dp</item>
<item name="android:cropToPadding">true</item>
<item name="android:typeface">monospace</item>
....
为了其他人的利益,以下是由于userSeven7s将我推向了正确的方向,我终于成功了 我使用以下内容创建了grid_image.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<style>
<item name="android:layout_height">50dp</item>
<item name="android:layout_width">50dp</item>
<item name="android:background">@color/white</item>
<item name="android:padding">2dp</item>
<item name="android:cropToPadding">true</item>
<item name="android:scaleType">fitXY</item>
</style>
为了其他人的利益,以下是由于userSeven7s将我推向了正确的方向,我终于成功了 我使用以下内容创建了grid_image.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<style>
<item name="android:layout_height">50dp</item>
<item name="android:layout_width">50dp</item>
<item name="android:background">@color/white</item>
<item name="android:padding">2dp</item>
<item name="android:cropToPadding">true</item>
<item name="android:scaleType">fitXY</item>
</style>
如果使用AttributeSet和attributes尝试解决方案。getAttributeCount始终返回0,那么剩下的唯一解决方案就是使用反射的黑客攻击:
Field field = ImageView.class.getDeclaredField("mCropToPadding");
field.setAccessible(true);
field.set(imageView, true);
使用它,你可能无法确定它是否能在其他android固件版本中工作。
无论如何,丢失的setter可能只是被遗忘了,因此我认为这是黑客攻击的正当理由。如果您尝试使用AttributeSet和attributes的解决方案。getAttributeCount始终返回0,那么剩下的唯一解决方案就是使用反射的黑客攻击:
Field field = ImageView.class.getDeclaredField("mCropToPadding");
field.setAccessible(true);
field.set(imageView, true);
使用它,你可能无法确定它是否能在其他android固件版本中工作。
不管怎么说,丢失的二传手可能只是被遗忘了,因此我有理由这样做。对不起,这与我的问题无关。我不是在问如何得到缩略图。我需要知道如何在代码中将ImageView设置为cropToPadding。@useSeven7s:no,setPadding相当于XML中的android:padding;android:Croptoppadding是完全不同的东西。刚刚开始尝试,在第XMLPullParser parser=mContext.getResources.getXmlR.style.GridImage行上得到错误资源$NotFoundException;有什么想法吗?这和你描述的不完全一样,因为它缺少一些东西。然而,我最终还是成功地让它发挥作用。为了其他可能正在查看此问题的人的利益,我将把完整的解决方案发布到单独的答案中,并且仍然会接受您的答案,因为它让我朝着正确的方向思考。对不起,这与我的问题无关。我不是在问如何得到缩略图。我需要知道如何在代码中将ImageView设置为cropToPadding。@useSeven7s:no,setPadding相当于XML中的android:padding;android:Croptoppadding是完全不同的东西。刚刚开始尝试,在第XMLPullParser parser=mContext.getResources.getXmlR.style.GridImage行上得到错误资源$NotFoundException;有什么想法吗?这和你描述的不完全一样,因为它缺少一些东西。然而,我最终还是成功地让它发挥作用。为了其他可能正在查看此问题的人的利益,我将把完整的解决方案发布到单独的答案中,并且仍然会接受您的答案,因为它让我朝着正确的方向思考。显示一些创建ImageView的代码。您已经添加了有效的代码,而应该是无效的代码..我无法显示代码-因为我找不到相应的代码。在这里的文档中,除了android:cropToPadding之外,所有XML元素都显示了等效代码。这是否意味着没有等效的方法?是的,似乎没有等效的方法。显示一些创建ImageView的代码。您已经添加了有效的代码,而应该是无效的代码..我无法显示代码-因为我找不到相应的代码。在这里的文档中,除了android:cropToPadding之外,所有XML元素都显示了等效代码。这是否意味着没有等效的方法?是的,似乎没有等效的方法。不确定此xml文件在旧的android sdk api上是否有效。对我来说,为了让解析器正常工作,我必须创建一个包含常规imageview标记的xml:不确定这个xml文件在旧的android sdk api上是否有效。对我来说,为了让解析器正常工作,我必须创建一个包含常规imageview标记的xml: