我有以下imageview,其图像小于包含此ImageView的RelativeLayout。我希望图像scalled适合imageView的宽度,但我无法使其工作。比如我 将此relativeLayout设置为 350dp宽度:
library(dplyr)
df = visits %>%
left_join(scores, by = c("Subj")) %>%
mutate(Visit = replace(Visit, !(DaysInStudy.y >= DaysInStudy.x - 6
& DaysInStudy.y <= DaysInStudy.x), NA)) %>%
select(-DaysInStudy.x, -visit, -Visit, Subj, DaysInStudy = DaysInStudy.y, scores, Visit)
#Showing top 10 rows of output df: head(df, n=10)
Subj DaysInStudy scores Visit
1 S1 -9 3 <NA>
2 S1 -8 7 <NA>
3 S1 -7 9 <NA>
4 S1 -6 6 V1
5 S1 -5 5 V1
6 S1 -4 1 V1
7 S1 -3 2 V1
8 S1 -2 8 V1
9 S1 -1 4 V1
10 S1 0 3 V1
正如您在图片中看到的那样,图像位于中心。 fitXY的问题在于宽度有效,但不会改变高度。我想要一些像 fitX 这样的东西。我也尝试了 centerInside ,但看起来一样。
答案 0 :(得分:1)
我也会使用centerCrop
或类似的。如果这对您不起作用,请检查此图像,看看您是否能找到任何有趣的内容:
如果这不适合您,请考虑查看Android中的图片惯例: https://developer.android.com/guide/topics/graphics/2d-graphics.html
答案 1 :(得分:1)
因为您的相对布局和Imageview都有包装内容高度,所以你必须使它们匹配parent并使scaletype fitXY ..
如下代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="350dp"
android:layout_height="match_parent"
android:background="@drawable/selector_button_grey"
android:clickable="true"
android:padding="5dp">
<ImageView
android:id="@+id/image_selector"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:background="@color/black"
android:src="@drawable/Nachos"
/>
<TextView
android:id="@+id/image_selector_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/image_selector"
android:gravity="center_horizontal|center_vertical"
android:paddingBottom="5dp"
android:paddingLeft="5dp"
android:textSize="18sp" />
</RelativeLayout>
答案 2 :(得分:0)
您应该将android:scaleType
属性更改为ImageView。
如果要按比例显示图片,可以使用centerCrop
。
如果您不想按比例显示图片,可以使用fitXY
。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="350dp"
android:layout_height="wrap_content"
android:background="@drawable/selector_button_grey"
android:clickable="true"
android:padding="5dp">
<ImageView
android:id="@+id/image_selector"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="@color/black"
android:scaleType="fitXY"
android:src="@drawable/Nachos" />
<TextView
android:id="@+id/image_selector_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/image_selector"
android:gravity="center_horizontal|center_vertical"
android:paddingBottom="5dp"
android:paddingLeft="5dp"
android:textSize="18sp"/>
</RelativeLayout>
答案 3 :(得分:0)
希望这有帮助! 在我的情况下它工作正常。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="350dp"
android:layout_height="match_parent"
android:background="@drawable/Nachos">
</RelativeLayout>
答案 4 :(得分:0)
RelativeLayout
上设置了一些填充,但ImageView
可能导致RelativeLayout
无法触及布局android:padding="5dp"
中的边:{/ p>
删除它:
android:paddingTop="5dp"
android:paddingBottom="5dp"
如果你真的想在顶部和底部设置一些填充,而在右边和左边设置 NOT ,那么如果你想填充顶部和底部 ADD 这些:
//use some existing reference to your NavMeshAgent
NavMeshAgent agent = PlayerController.instance.GetComponent<NavMeshAgent>();
//This will fire when you get the error you're describing.
if (!agent.isOnNavMesh)
{
Vector3 warpPosition; //Set to position you want to warp to
agent.transform.position = warpPosition;
agent.enabled = false;
agent.enabled = true;
}
如果你根本不想要填充,请不要添加!
答案 5 :(得分:0)
我使用了另一种方法。首先,我在不加载内存的情况下获得了尺寸:
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inJustDecodeBounds = true;
try {
BitmapFactory.decodeStream(new FileInputStream(f), null, bitmapOptions);
BitmapFactory.decodeFile(f.getName(), bitmapOptions);
float scale = (bitmapOptions.outHeight * 1f) / (bitmapOptions.outWidth);
cache.put(image, value);
} catch (Throwable e) {
e.printStackTrace();
}
然后使用该值比例
imageView.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(IMAGE_SIZE, Math.round(IMAGE_SIZE * imageData.getScale())));
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setAdjustViewBounds(true);
imageView.setCropToPadding(true);