Я знаю, что на него ответили и приняли, но эти ответы не сработали для меня. Возможно, произошли изменения в RelativeLayout.LayoutParams или даже в GoogleMaps, так как он был дан ответ.
В моих попытках с существующими ответами я понял, что может быть больше правил LayoutParam для кнопки компаса, которые переопределяют мои попытки переместить кнопку компаса, где я этого хотел. Я экспериментировал, удалив несколько параметров вроде этого:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
locationButton.getLayoutParams();
layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_TOP);
layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_START);
layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_END);
И затем добавив новые правила, как в нескольких ответах. Но он все еще не работал должным образом. Чаще всего кнопка оставалась где-то с левой стороны.
Я решил просто создать новые LayoutParams и заменить существующие и ... он работал отлично!
Я изначально использовал тег вида для GoogleMapCompass
, но вопрос касался GoogleMapMyLocationButton
. Поэтому я прокомментировал строку GoogleMapCompass
и поместил строку GoogleMapMyLocationButton
.
Вот код для MapFragment.java:
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
public class MapFragment extends Fragment implements OnMapReadyCallback {
private static final String TAG = MapFragment.class.getSimpleName();
private SupportMapFragment mapFragment = null;
public MapFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_map, container, false);
Log.d(TAG, "onCreateView()");
mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.setRetainInstance(true);
mapFragment.getMapAsync(this);
return view.findViewById(R.id.map);
}
@Override
public void onMapReady(GoogleMap googleMap) {
Log.d(TAG, "onMapReady()");
View mapView = mapFragment.getView();
moveCompassButton(mapView);
}
/**
* Move the compass button to the right side, centered vertically.
*/
public void moveCompassButton(View mapView) {
try {
assert mapView != null; // skip this if the mapView has not been set yet
Log.d(TAG, "moveCompassButton()");
// View view = mapView.findViewWithTag("GoogleMapCompass");
View view = mapView.findViewWithTag("GoogleMapMyLocationButton");
// move the compass button to the right side, centered
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_END, RelativeLayout.TRUE);
layoutParams.addRule(RelativeLayout.CENTER_VERTICAL);
layoutParams.setMarginEnd(18);
view.setLayoutParams(layoutParams);
} catch (Exception ex) {
Log.e(TAG, "moveCompassButton() - failed: " + ex.getLocalizedMessage());
ex.printStackTrace();
}
}
}
Я не думаю предварительная фиксация , рычаг может на самом деле изменить данные, которые фиксируются - это может запретить фиксацию, но я не думаю, что это может сделать преобразование для Вас.
Это кажется, что Вы хотите набор 'svn:eol-стиля' свойства 'собственному компоненту' - это автоматически преобразует новые строки в то, что используется на Вашей платформе (используйте 'CRLF', 'CR' или 'LF' для получения тех независимо от того, что ОС хочет).
можно использовать автосвойства так, чтобы все будущие файлы, которые Вы создаете, имели этот набор свойств (автоматические опоры обрабатываются клиентские, таким образом, необходимо было бы настроить это для каждого пользователя).
Добавьте рычаг перед фиксацией , который анализирует содержание файла и выполняет порчу CRLF/LF/CR/etc для Вас, прежде чем это будет записано в SVN.
Можно рассмотреть использование команды как Linux dos2unix для преобразования. Будучи командой Linux, это просто в использовании он в пакетном режиме со сценариями и т.д. Я не знаю, существует ли эквивалент для других операционных систем.