Im пытается нарисовать некоторые предметы для тестирования в пользовательском представлении, который добавляется в GoogleMaps FragmentActivity. Но почему-то, когда я запускаю его в эмуляторе, кажется, что мой CustomView isnt drawing.I попробовал его с новым RelativeLayout и MapLayout. Есть идеи ? Что я сделал не так ?Android/Java - Пользовательский вид на GoogleMaps FragmentActivity не показан
Heres мой Главная GoogleMaps FragmentActivity код, автоматически генерируется из Android шаблонов:
public class GoogleMaps extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.google_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
//RelativeLayout relativeLayout = new RelativeLayout(this);
//relativeLayout.addView(new SpriteLayer(this));
MapView map = new MapView(this);
map.addView(new SpriteLayer(this));
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
Вот мой CustomView Код:
public class SpriteLayer extends View {
Paint paint = new Paint();
public SpriteLayer(Context context) {
super(context);
setWillNotDraw(false);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int desiredWidth = 100;
int desiredHeight = 100;
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
int width;
int height;
//Measure Width
if (widthMode == MeasureSpec.EXACTLY) {
//Must be this size
width = widthSize;
} else if (widthMode == MeasureSpec.AT_MOST) {
//Can't be bigger than...
width = Math.min(desiredWidth, widthSize);
} else {
//Be whatever you want
width = desiredWidth;
}
//Measure Height
if (heightMode == MeasureSpec.EXACTLY) {
//Must be this size
height = heightSize;
} else if (heightMode == MeasureSpec.AT_MOST) {
//Can't be bigger than...
height = Math.min(desiredHeight, heightSize);
} else {
//Be whatever you want
height = desiredHeight;
}
//MUST CALL THIS
setMeasuredDimension(width, height);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.GREEN);
Rect rect = new Rect(20, 56, 200, 112);
canvas.drawRect(rect, paint);
Log.println(Log.ERROR,"Test ","One");
}
}
В настоящее время я вижу только стандартную карту с отметкой на нем, по-прежнему нет Прямоугольник :(
Спасибо за ваш быстрый ответ! Я посмотрел на него и сделал несколько попыток. Не работает. Как добавить пользовательский вид? Или есть логическая ошибка. Я не нашел много статей об этом. Также я отредактировал свой вопрос немного :) – genaray
Вы все еще вызываете super.onMeasure с полученными параметрами. Вам не нужно называть это. – jonathanrz
Итак, я удалил его и снова проверил, ничего: - /. Любые другие идеи? – genaray