样式调整

This commit is contained in:
2026-04-13 16:38:46 +08:00
parent 23fc0da5c8
commit 20c39a4a12
2 changed files with 52 additions and 16 deletions

View File

@@ -263,7 +263,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
FrameLayout.LayoutParams bottomParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); FrameLayout.LayoutParams bottomParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
bottomParams.gravity = Gravity.BOTTOM; bottomParams.gravity = Gravity.BOTTOM;
container.addView(bottomContainer, bottomParams); container.addView(bottomContainer, bottomParams);
container.setPadding(0,0,0,dp2px(65)); container.setPadding(0, 0, 0, dp2px(65));
// --- 模式选择菜单 --- // --- 模式选择菜单 ---
@@ -272,7 +272,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
// 布局参数:位于规划按钮上方 // 布局参数:位于规划按钮上方
FrameLayout.LayoutParams menuParams = new FrameLayout.LayoutParams(dp2px(130), ViewGroup.LayoutParams.WRAP_CONTENT); FrameLayout.LayoutParams menuParams = new FrameLayout.LayoutParams(dp2px(130), ViewGroup.LayoutParams.WRAP_CONTENT);
menuParams.gravity = Gravity.BOTTOM | Gravity.END; menuParams.gravity = Gravity.BOTTOM | Gravity.END;
menuParams.setMargins(0, 0, dp2px(15), dp2px(330)); // 高度根据按钮位置调整 menuParams.setMargins(0, 0, dp2px(15), dp2px(230)); // 高度根据按钮位置调整
container.addView(modeMenu, menuParams); container.addView(modeMenu, menuParams);
@@ -296,7 +296,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
int layoutSize = dp2px(44); int layoutSize = dp2px(44);
FrameLayout.LayoutParams toggleParams = new FrameLayout.LayoutParams(layoutSize, layoutSize); FrameLayout.LayoutParams toggleParams = new FrameLayout.LayoutParams(layoutSize, layoutSize);
toggleParams.gravity = Gravity.BOTTOM | Gravity.END; toggleParams.gravity = Gravity.BOTTOM | Gravity.END;
toggleParams.setMargins(0, 0, dp2px(12), dp2px(340)); // 位于定位按钮上方 toggleParams.setMargins(0, 0, dp2px(12), dp2px(210)); // 位于定位按钮上方
container.addView(planToggleBtn, toggleParams); container.addView(planToggleBtn, toggleParams);
// --- 右下角定位按钮 --- // --- 右下角定位按钮 ---
@@ -316,7 +316,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15f)); aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15f));
}); });
FrameLayout.LayoutParams locParams = new FrameLayout.LayoutParams(layoutSize, layoutSize); FrameLayout.LayoutParams locParams = new FrameLayout.LayoutParams(layoutSize, layoutSize);
locParams.setMargins(0, 0, dp2px(15), dp2px(285)); // 调高一点,避开底部的面板 locParams.setMargins(0, 0, dp2px(15), dp2px(150)); // 调高一点,避开底部的面板
locParams.gravity = Gravity.BOTTOM | Gravity.END; locParams.gravity = Gravity.BOTTOM | Gravity.END;
container.addView(mLocBtn, locParams); container.addView(mLocBtn, locParams);
} }
@@ -325,7 +325,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
private LinearLayout createDetailPanel(Context context) { private LinearLayout createDetailPanel(Context context) {
LinearLayout panel = new LinearLayout(context); LinearLayout panel = new LinearLayout(context);
panel.setOrientation(LinearLayout.VERTICAL); panel.setOrientation(LinearLayout.VERTICAL);
int padding = dp2px(20); int padding = dp2px(15);
panel.setPadding(padding, padding, padding, padding); panel.setPadding(padding, padding, padding, padding);
// --- (包含标题和关闭按钮) --- // --- (包含标题和关闭按钮) ---
@@ -347,11 +347,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
ivClose.setScaleType(ImageView.ScaleType.CENTER_INSIDE); ivClose.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
ivClose.setPadding(dp2px(5), dp2px(5), dp2px(5), dp2px(5)); ivClose.setPadding(dp2px(5), dp2px(5), dp2px(5), dp2px(5));
ivClose.setOnClickListener(v -> { ivClose.setOnClickListener(v -> {
if (detailPanel != null) resetView();
detailPanel.setVisibility(View.GONE);
searchArea.setVisibility(View.VISIBLE);
planToggleBtn.setVisibility(View.VISIBLE);
mLocBtn.setVisibility(View.VISIBLE);
}); });
LinearLayout.LayoutParams closeParams = new LinearLayout.LayoutParams(dp2px(28), dp2px(28)); LinearLayout.LayoutParams closeParams = new LinearLayout.LayoutParams(dp2px(28), dp2px(28));
@@ -430,6 +426,14 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
return panel; return panel;
} }
private void resetView() {
if (detailPanel != null)
detailPanel.setVisibility(View.GONE);
searchArea.setVisibility(View.VISIBLE);
planToggleBtn.setVisibility(View.VISIBLE);
mLocBtn.setVisibility(View.VISIBLE);
}
private boolean isGetInputtips = false; private boolean isGetInputtips = false;
private void calculateRouteBeforeNavi() { private void calculateRouteBeforeNavi() {
@@ -811,6 +815,18 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
aMap.setMyLocationEnabled(true); aMap.setMyLocationEnabled(true);
aMap.setOnMarkerClickListener(this); aMap.setOnMarkerClickListener(this);
// 添加地图点击监听,当 detailPanel 显示时点击地图就执行 resetView
aMap.setOnMapClickListener(latLng -> {
if (detailPanel != null && detailPanel.getVisibility() == View.VISIBLE) {
resetView();
}
});
aMap.setOnPOIClickListener(poi -> {
if (detailPanel != null && detailPanel.getVisibility() == View.VISIBLE) {
resetView();
}
});
MyLocationStyle myLocationStyle = new MyLocationStyle(); MyLocationStyle myLocationStyle = new MyLocationStyle();
try { try {
Bitmap carBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.car); Bitmap carBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.car);
@@ -823,7 +839,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
} }
myLocationStyle.anchor(0.5f, 0.5f); myLocationStyle.anchor(0.5f, 0.5f);
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW);
aMap.setMyLocationStyle(myLocationStyle); aMap.setMyLocationStyle(myLocationStyle);
aMap.getUiSettings().setZoomControlsEnabled(false); aMap.getUiSettings().setZoomControlsEnabled(false);
aMap.getUiSettings().setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT); aMap.getUiSettings().setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT);
@@ -1035,6 +1051,7 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
dataMap.put("latLng", latLng); dataMap.put("latLng", latLng);
dataMap.put("stationId", stationId); dataMap.put("stationId", stationId);
dataMap.put("address", address); dataMap.put("address", address);
dataMap.put("name", name);
m.setObject(dataMap); m.setObject(dataMap);
stationMarkers.add(m); stationMarkers.add(m);
@@ -1045,7 +1062,27 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
//地图选点 //地图选点
for (Marker m : stationMarkers) { for (Marker m : stationMarkers) {
m.setIcon(BitmapDescriptorFactory.fromResource(m.equals(marker) ? R.drawable.ic_marker : R.drawable.ic_un_marker)); Object obj = m.getObject();
if (obj instanceof Map) {
Map<String, Object> dataMap = (Map<String, Object>) obj;
String name = (String) dataMap.get("name");
if (name != null) {
// 截取显示名称最多7个字符
String displayName = name.length() > 7 ? name.substring(0, 7) + "..." :
name;
boolean isSelected = m.equals(marker);
// 使用 getMarkerIconWithText 创建带文字的图标
BitmapDescriptor icon = getMarkerIconWithText(mContext, displayName,
isSelected);
m.setIcon(icon);
} else {
// 如果没有 name降级到直接设置图标
m.setIcon(BitmapDescriptorFactory.fromResource(m.equals(marker) ?
R.drawable.ic_marker : R.drawable.ic_un_marker));
}
}
} }
@@ -1281,13 +1318,12 @@ public class NativeMapView implements PlatformView, LocationSource, AMapLocation
tv.setPadding(dp2px(15), dp2px(12), dp2px(15), dp2px(12)); tv.setPadding(dp2px(15), dp2px(12), dp2px(15), dp2px(12));
tv.setGravity(Gravity.CENTER); tv.setGravity(Gravity.CENTER);
if (isHighlight) { if (isHighlight) {
tv.setTextColor(Color.WHITE);
// 顶部圆角绿色背景 // 顶部圆角绿色背景
tv.setBackground(getTopRoundedDrawable(Color.parseColor("#27AE60"), 12)); tv.setBackground(getTopRoundedDrawable(Color.parseColor("#27AE60"), 12));
} else { } else {
tv.setTextColor(Color.parseColor("#666666"));
tv.setBackgroundColor(Color.TRANSPARENT); tv.setBackgroundColor(Color.TRANSPARENT);
} }
tv.setTextColor(Color.parseColor(isHighlight ? "#ffffffff" : "#ffc9cdd4"));
return tv; return tv;
} }

View File

@@ -2,8 +2,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" /> <solid android:color="#FFFFFF" />
<corners <corners
android:topLeftRadius="16dp" android:topLeftRadius="24dp"
android:topRightRadius="16dp" android:topRightRadius="24dp"
android:bottomLeftRadius="0dp" android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp" /> android:bottomRightRadius="0dp" />
</shape> </shape>