我正在尝试在我的应用中显示谷歌地图的图像,使其与屏幕宽度相匹配。 我使用DisplayMetrics作为以下代码并将其传递给谷歌以获取该大小的图像(请参阅url参数)。但正如您在屏幕截图中看到的那样,它显示错误的宽度。如何解决?我认为我发送的谷歌参数是不正确的?
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int heightP = (int) displaymetrics.heightPixels;
int widthP = (int) displaymetrics.widthPixels;
int height = (int) (displaymetrics.heightPixels / displaymetrics.density);
int width = (int) (displaymetrics.widthPixels / displaymetrics.density);
................
ImageView imgImage = (ImageView) findViewById(R.id.imgImage);
//TextView txtDetail = (TextView) findViewById(R.id.txtDetail);
imgImage.getLayoutParams().width = LayoutParams.MATCH_PARENT;
imgImage.getLayoutParams().height = (height / 2);
...............
ImageView gmap = (ImageView) findViewById(R.id.googlemap);
gmap.getLayoutParams().height = 200;
//gmap.requestLayout();
String url = "http://maps.google.com/maps/api/staticmap?center=" + estate.getString("maplat") + "," + estate.getString("maplng") + "&zoom=" + estate.getString("mapzoom") + "&size=" + Integer.toString(widthP - 10) + "x200&sensor=false&format=jpeg&&markers=color:red|" + estate.getString("maplat") + "," + estate.getString("maplng");
Picasso.with(this)
.load(url)
.placeholder(R.drawable.animated_progress)
.into(gmap);
布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/detailLayer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layoutDirection="rtl"
android:padding="8dp"
tools:context=".DetailActivity">
<ScrollView
android:id="@+id/scrollview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:textAlignment="gravity"
android:textDirection="rtl">
<Button
android:id="@+id/btnEdit"
style="@style/CKButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:text="@string/txt_manage"
android:visibility="gone" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="-50dp"
android:src="@drawable/sold"
android:visibility="gone" />
<ImageView
android:id="@+id/imgImage"
android:layout_width="match_parent"
android:layout_height="300dp"
android:clickable="true"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:scaleType="centerCrop"
android:textAlignment="gravity" />
</ScrollView>
</FrameLayout>
这是问题的图像:
答案 0 :(得分:0)
尝试在imageview中设置属性android:scaleType="fitXY"
。
答案 1 :(得分:0)
通过使用XML,只需输入属性
即可 android:scaleType="fitXY"
到你的ImageView。像
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
**android:scaleType="fitXY"**
android:src="@drawable/logo" />
通过Java,
imageview.setScaleType(ScaleType.FIT_XY);
答案 2 :(得分:0)
是的,您的url参数不正确,因为您发送的图像宽度为密度像素,这是错误的。
在你的网址中,只需要传递像素值而不是dp(密度像素)值。
有关Google地图网址的详细信息,请阅读this doc。
它可以帮助发送哪种类型的参数传递并获得更准确的地图图像大小。
screen_width = getResources().getDisplayMetrics().widthPixels;
String url = "http://maps.google.com/maps/api/staticmap?center=" + estate.getString("maplat") + "," + estate.getString("maplng") + "&zoom=" + estate.getString("mapzoom") + "&size=" + Integer.toString(screen_width - 10) + "x200&sensor=false&format=jpeg&&markers=color:red|" + estate.getString("maplat") + "," + estate.getString("maplng");
并将其传递给您的网址。