Ich weiß, dass es eine lange Zeit gewesen ist, dass die Frage wurde gefragt, aber ich feld zu diesem Thema ein paar Tagen habe ich vor behob das Problem wie folgt:
try {
assert mapFragment.getView() != null;
final ViewGroup parent = (ViewGroup) mapFragment.getView().findViewWithTag("GoogleMapMyLocationButton").getParent();
parent.post(new Runnable() {
@Override
public void run() {
try {
for (int i = 0, n = parent.getChildCount(); i < n; i++) {
View view = parent.getChildAt(i);
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) view.getLayoutParams();
// position on right bottom
rlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP,0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
rlp.rightMargin = rlp.leftMargin;
rlp.bottomMargin = 25;
view.requestLayout();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
in diesem Beispiel legte ich den Kompass in der Ecke rechts. Sie müssen sicherstellen, dass Ihr mapFragment erstellt wird, wenn Sie dies tun, ich schlage vor, dass Sie Ihren Code in der Methode "onMapReady" Ihrer MapFragment ausführen.
OMG !!! DANKE!!! – capdragon
Funktioniert wie ein Charme! – sud007
keine gute Lösung, da es die Kameraposition beeinflussen wird –