গুগল ম্যাপস এপিআই এর "আমার অবস্থান" বোতামের অবস্থান পরিবর্তন করুন


84

আমি গুগল ম্যাপস অ্যান্ড্রয়েড এপিআই ভি 2 ব্যবহার করছি এবং আমার "আমার অবস্থান" বোতামের অবস্থানের সুযোগ পাওয়ার একটি উপায় প্রয়োজন need

আমি এইভাবে "আমার অবস্থান" বোতামটি পেয়েছি:

GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
final GoogleMap map = ((SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map)).getMap();

// This gets the button
map.setMyLocationEnabled(true);

4
আফাইক, আপনি না। আপনি আপনার বিন্যাসটি এমনভাবে সামঞ্জস্য করুন যাতে বিজ্ঞাপন মানচিত্রে ওভারল্যাপ না করে।
কমন্সওয়্যার

4
আপনি কি গুগলম্যাপের সেটপ্যাডিং () পদ্ধতিটি দেখেছেন? দেখুন: developers.google.com/maps/docamentation/android/…
IgorGanapolsky

উত্তর:


70

কেবল গুগলম্যাপ.সেটপ্যাডিং (বাম, উপরে, ডান, নীচে) ব্যবহার করুন যা আপনাকে মানচিত্রের এমন কিছু অংশ নির্দেশ করতে দেয় যা অন্যান্য দর্শন দ্বারা অস্পষ্ট থাকতে পারে। প্যাডিং সেট করা মানক মানচিত্র নিয়ন্ত্রণগুলিতে পুনরায় অবস্থান নির্ধারণ করে এবং ক্যামেরা আপডেটগুলি প্যাডেড অঞ্চল ব্যবহার করবে।

https://developers.google.com/maps/docamentation/android/map#map_padding


6
এটি সেরা উত্তর। FindById (1) একটি ভয়ঙ্কর সমাধান
পাবলোবলেজ 8'16

পরম স্পষ্ট এবং সর্বোত্তম অনুশীলনের উত্তর। এটা ভাল।
josefdlange

4
নীচের ডানদিকে কোণায় মাইলোকেশন বোতামটি রাখার জন্য ভাল কাজ করে, তবে আপনি যেমন বলছেন এটি ক্যামেরা আপডেটগুলি বিশৃঙ্খলা করে। কীভাবে সমাধান করবেন? এখন পর্যন্ত আমার ক্যামেরাটি সর্বদা কেন্দ্র হিসাবে পর্দার নীচে দেখায়। স্টাফ গণনা করার সময় আপনি কি ক্যামেরায় পর্দার অর্ধেক উচ্চতা যুক্ত করেন?
চক্র

4
আমি মানচিত্র ভিউ.ফাইন্ডভিউ উইথট্যাগ ("গুগলম্যাপমাইলোকেশনবাটন") পছন্দ করি; সমাধান নীচে।
আয়েভজ

4
নোট করুন যে setPaddingঅনাকাঙ্ক্ষিত হতে পারে প্রচুর অন্যান্য পার্শ্ব প্রতিক্রিয়া রয়েছে। সবচেয়ে গুরুত্বপূর্ণ, এটি ক্যামেরা টার্গেটের স্ক্রিনের অবস্থান পরিবর্তন করে changes
zyamys

87

আপনি "আমার অবস্থান" বোতামটি পেতে এবং এটিকে সরাতে পারেন, যেমন:

public class MapFragment extends SupportMapFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View mapView = super.onCreateView(inflater, container, savedInstanceState);   

    // Get the button view 
    View locationButton = ((View) mapView.findViewById(1).getParent()).findViewById(2);

    // and next place it, for exemple, on bottom right (as Google Maps app)
    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
    // position on right bottom
    rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
    rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
    rlp.setMargins(0, 0, 30, 30);
    }
}

4
হাই @ ফ্যাবলুইস, সবার আগে, আমি আপনাকে ধন্যবাদ জানাতে চাই। আপনার কোডটি লোকেশনবাটনটিকে সরিয়ে নিয়েছে। আমি কেবল কৌতূহলী যে আপনি কীভাবে সেই বোতামটির আইডি বের করলেন? আপনি এই সম্পর্কে আরও ব্যাখ্যা করতে পারেন mapView.findViewById(1).getParent()).findViewById(2);। আবার ধন্যবাদ, এসএইচ
সোয়ান

4
অ্যান্ড্রয়েড স্টুডিও ডিবাগারের মাধ্যমে
ফাবলুইস

4
আপনি যদি এটি করেন তবে অ্যান্ড্রয়েড স্টুডিওটি "প্রত্যাশিত ধরণের আইডির সংস্থান" বলবে
ইনমেথ

11
@ ইনমিথ এমনকি আমিও একই ত্রুটি পেয়েছি তবে আমি পূর্ণসংখ্যা শ্রেণিটি ব্যবহার করে 1 এবং 2 পার্সড করেছি। FindViewById (Integer.parseInt ("1"))। আপনি যদি আরও ভাল সমাধান পেয়ে থাকেন তবে আমাকে জানান।
হর্শা

4
হুম কিভাবে RelativeLayout.ALIGN_PARENT_TOPএবং RelativeLayout.ALIGN_PARENT_BOTTOMসমান নীচে ডান?
ব্যবহারকারী 2968401

15

এটি সেরা সমাধান নাও হতে পারে তবে আপনি নিজের বোতামটি মানচিত্রের উপরে রেখে নিজেই পরিচালনা করতে পারেন। এটি নিম্নলিখিত নিতে হবে:

1) মানচিত্রটি একটি ফ্রেমআলআউটতে রাখুন এবং উপরে আপনার বোতামটি যুক্ত করুন। যেমন

<FrameLayout
    android:id="@+id/mapFrame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >



    <fragment
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/mapFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        class="com.google.android.gms.maps.MapFragment"
        map:mapType="normal"
        map:uiCompass="true" />

    <ImageButton
        android:id="@+id/myMapLocationButton"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="bottom|right"
        android:background="@drawable/myMapLocationDrawable"
        android:contentDescription="My Location" />

</FrameLayout>

2) মানচিত্রের ইউআই সেটিংস সম্পাদনা করুন যাতে আপনি সেটমাইলোকেশনএনেবলড (সত্য) বললে বোতামটি উপস্থিত হয় না। আপনি map.getUiSettings () এর মাধ্যমে এটি করতে পারেন। #MyLocationButtonEn सक्षम (মিথ্যা);

3) সরবরাহিত বোতামটি কী করে তা অনুকরণ করতে আপনার নতুন বোতামের ক্লিকটি পরিচালনা করুন। যেমন mMap.setMyLocationEn सक्षम কল (...); এবং বর্তমান অবস্থানে মানচিত্র প্যান করুন।

আশা করি সহায়তা করে বা আশা করি কেউ আপনার জন্য সহজ সমাধান নিয়ে দীর্ঘায়িত হবে ;-)


কমন্সওয়্যারের সাথে আমি যে সম্মত তা মূল্যবান বলে বিটিডাব্লু, কোনও বিজ্ঞাপনের সাথে মানচিত্রটি coverেকে রাখবেন না সেরা!
রায়ান

14

এটি ইতিমধ্যে উপরে বর্ণিত হয়েছে fab ফাবলুইসের উত্তরের সাথে একটি সামান্য সংযোজন। আপনি সাপোর্টম্যাপফ্র্যাগমেন্ট থেকে আপনার মানচিত্রের দৃশ্যও পেতে পারেন।

        /**
         * Move the button
         */
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().
                findFragmentById(R.id.map);
        View mapView = mapFragment.getView();
        if (mapView != null &&
                mapView.findViewById(1) != null) {
            // Get the button view
            View locationButton = ((View) mapView.findViewById(1).getParent()).findViewById(2);
            // and next place it, on bottom right (as Google Maps app)
            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
                    locationButton.getLayoutParams();
            // position on right bottom
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
            layoutParams.setMargins(0, 0, 30, 30);
        }

4
এই লাইন - ((দেখুন) মানচিত্র ভিউ.ফাইন্ডভিউবিআইআইডি (1) .গেট প্যারেন্ট ()) সন্ধান করুনভিউবিআইডি (2); আমাকে একটি ত্রুটি দিচ্ছিল - 1 এবং 2 পূর্ণসংখ্যার "টাইপ আইডির প্রত্যাশিত সংস্থান" তখন আমি এটি এর মতো সমাধান করেছি ((দেখুন) মানচিত্র ভিউ.ফাইন্ডভিউবিআইআইডি (ইন্টিজার.পারসআইন্ট ("1"))। গিটারপ্যারেন্ট ()) সন্ধান ভিউবিআইআইডি (পূর্ণসংখ্যা .parseInt ("2"));
জোহাব আলী

14

অন্যরা যে ম্যাজিক ভিউ আইডিগুলি ব্যবহার করছে তা দেখে আমি অভিনব নয়, আমি MapViewবাচ্চাদের সন্ধানের জন্য ট্যাগ ব্যবহার করার পরামর্শ দিই ।

জুম নিয়ন্ত্রণগুলির উপরে আমার অবস্থান বোতামটি রাখার জন্য আমার সমাধানটি এখানে ।

// Get map views
View location_button =_mapView.findViewWithTag("GoogleMapMyLocationButton");
View zoom_in_button = _mapView.findViewWithTag("GoogleMapZoomInButton");
View zoom_layout = (View) zoom_in_button.getParent();

// adjust location button layout params above the zoom layout
RelativeLayout.LayoutParams location_layout = (RelativeLayout.LayoutParams) location_button.getLayoutParams();
location_layout.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
location_layout.addRule(RelativeLayout.ABOVE, zoom_layout.getId());

4
ভাবছি কিভাবে কম্পাস জন্য একই কাজ যে কেউ জন্য, ট্যাগ হয় GoogleMapCompass
zyamys

4
আরে কর্ড, আমি জানি না আপনি কীভাবে এটি করবেন তা মনে আছে তবে আপনি কী মনে করতে পারেন যে আপনি ম্যাপভিউ ট্যাগের তালিকাটি কোথায় পেয়েছেন? আমি অন্য কিছু জিনিস এদিক ওদিক সরিয়ে নিয়ে যাচ্ছি এবং লোকেদের অন্যান্য প্যাটার্নগুলি আমি সত্যিই অপছন্দ করি।
রেন্ডি

4
@ র্যান্ডি ম্যাপভিউ (ফ্রেমলাইআউট) এর সংক্ষিপ্তসারগুলির মাধ্যমে আইট্রেট করুন এবং সেগুলি পেতে ট্যাগগুলি লগইন করুন। এখানে দেখুন (
কোটলিনে

@ এলজিডি আপনাকে ধন্যবাদ !!
রেন্ডি

12

আমি নীচের কোডটি ব্যবহার করে আমার অবস্থান বোতামটি ডান নীচের কোণায় পুনরায় অবস্থিত করে আমার মানচিত্রের খণ্ডে এই সমস্যাটি সমাধান করেছি, এখানে আমার মানচিত্র ক্রিয়াকলাপ। জাভা: -

onCreate () পদ্ধতিতে কোডের এই লাইনগুলি যুক্ত করুন,

 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapView = mapFragment.getView();
        mapFragment.getMapAsync(this);

এবং এখানে ম্যাপআরডি () কোডটি রয়েছে: -

@Override
        public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;
            mMap.setMyLocationEnabled(true);

            // 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));

            if (mapView != null &&
                    mapView.findViewById(Integer.parseInt("1")) != null) {
                // Get the button view
                View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
                // and next place it, on bottom right (as Google Maps app)
                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
                        locationButton.getLayoutParams();
                // position on right bottom
                layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
                layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
                layoutParams.setMargins(0, 0, 30, 30);
            }

        }

আমি আশা করি, এটি আপনার সমস্যার সমাধান করবে। ধন্যবাদ


ধন্যবাদ আমার জন্য কাজ। আমি কেবলমাত্র ALIGN_PARENT_BOTTOM দিয়ে চেষ্টা করছিলাম কিন্তু আমার পক্ষে কাজ করে নি। এটা কিভাবে কাজ করছে?
শরথ ওয়েভার

আপনাকে ম্যাপভিউ = (দেখুন) ম্যাপফ্র্যাগমেন্ট.জেটভিউ () এর মতো (দৃশ্য) কাস্ট করতে হবে;
মোঃ শিহাব উদ্দিন

9

প্রথমে গুগল ম্যাপ দেখুন:

 View mapView = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getView();

তারপরে মাইলোকেশন বোতামটি (অ্যান্ড্রয়েড স্টুডিও ডিবাগারের আইডি এর) সন্ধান করুন:

 View btnMyLocation = ((View) mapView.findViewById(1).getParent()).findViewById(2);

অবশেষে, কেবলমাত্র MyLocation বোতামের জন্য নতুন রিলেটিভলআউট প্যারামগুলি সেট করুন (এক্ষেত্রে পিতামাতার ডান + কেন্দ্রটি উল্লম্বভাবে সাজান):

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(80,80); // size of button in dp
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
    params.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
    params.setMargins(0, 0, 20, 0);
    btnMyLocation.setLayoutParams(params);

বুম! এখন আপনি এটি আপনার পছন্দমতো স্থানান্তর করতে পারেন;)


4
এই লাইন - ((দেখুন) মানচিত্র ভিউ.ফাইন্ডভিউবিআইআইডি (1) .গেট প্যারেন্ট ()) সন্ধান করুনভিউবিআইডি (2); আমাকে ত্রুটি দিচ্ছে - 1 এবং 2 পূর্ণসংখ্যায় "টাইপ আইডির প্রত্যাশিত সংস্থান"।
zookastos

4
এটি ব্যবহার করে দেখুন - বিটিএনএমইলোকেশন = ((দেখুন) ম্যাপভিউ.ফিন্ড ভিউবিআইআইডি (ইন্টিজার.পার্সইন্ট ("1"))। গেটপ্যারেন্ট ()) সন্ধান করুনভিউবিআইডি (ইন্টিজার.পারসেন্ট ("2"));
সিলামবারসান পুনগুটি

@ নালিনের একটি বিকল্প রয়েছে যদি আপনি চেকটি অক্ষম করতে ত্রুটির উপর আল্ট-এন্টার প্রবেশ করেন (যেমন পদ্ধতিটির জন্য)।
রিচার্ড লে ম্যাসুরিয়ার

8

নীচের পদ্ধতিটি দেখুন। এটি এমন শ্রেণীর ভিতরে বাস করে যা সাপোর্টম্যাপফ্র্যাগমেন্ট প্রসারিত করে। এটি বোতামটির জন্য ধারক দর্শন পেয়েছে এবং এটি নীচে প্রদর্শিত হবে, অনুভূমিকভাবে কেন্দ্র করে।

/**
     * Move my position button at the bottom of map
     */
    private void resetMyPositionButton()
    {
        //deep paths for map controls
        ViewGroup v1 = (ViewGroup)this.getView();
        ViewGroup v2 = (ViewGroup)v1.getChildAt(0);
        ViewGroup v3 = (ViewGroup)v2.getChildAt(0);
        ViewGroup v4 = (ViewGroup)v3.getChildAt(1);

        //my position button
        View position =  (View)v4.getChildAt(0);

        int positionWidth = position.getLayoutParams().width;
        int positionHeight = position.getLayoutParams().height;

        //lay out position button
        RelativeLayout.LayoutParams positionParams = new RelativeLayout.LayoutParams(positionWidth,positionHeight);
        int margin = positionWidth/5;
        positionParams.setMargins(0, 0, 0, margin);
        positionParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
        positionParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
        position.setLayoutParams(positionParams);
    }

এটা আমার দেবার java.lang.ClassCastException: maps.af.q android.view.ViewGroup কাস্ট করা যাবে না
Nayanesh গুপ্তে

8

আপনি যদি কেবলমাত্র অবস্থানের ইঙ্গিতটি সক্ষম করতে চান (নীল বিন্দু) তবে ডিফল্ট আমার লোকেশন বোতামটির প্রয়োজন নেই:

mGoogleMap.setMyLocationEnabled(true);
mGoogleMap.getUiSettings().setMyLocationButtonEnabled(false);

এইভাবে আপনি নিজের বোতামটিও আঁকতে পারেন যেখানে আপনি পছন্দ করেন এমন অদ্ভুত জিনিসগুলি ছাড়াই mapView.findViewById(1).getParent())


আপনাকে অনেক ধন্যবাদ
Nacho Zullo

2

আমারও একই সমস্যা ছিল। আমি হায়ারার্কি ভিউয়ারটি ব্যবহার করে বোতামটি প্রদর্শনের জন্য ব্যবহৃত ভিউ সনাক্ত করতে এবং এটির দ্বারা চালিত হয়েছিল। খুব হ্যাকি, আমি জানি, কিন্তু অন্যভাবে বের করতে পারিনি।


4
আপনার সমাধান ভাগ করে নিতে পারেন দয়া করে।
ক্লুজিয়ার

2

এই কাজটি পেতে কিছুটা সংগ্রাম হয়েছিল। তবে আমি এটি সম্পন্ন করেছি এবং প্রক্রিয়াটিতে জুম বোতামগুলিও প্রায় সরানো শুরু করেছিল। এখানে আমার সম্পূর্ণ কোড:

package com.squirrel.hkairpollution;

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.CameraUpdateFactory;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.LatLng;

public class MySupportMapFragment extends SupportMapFragment {

private static final String TAG = HKAirPollution.TAG;

public MySupportMapFragment() {
    return;
}

@Override
public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2) {
    Log.v(TAG, "In overridden onCreateView.");
    View v = super.onCreateView(arg0, arg1, arg2);
    Log.v(TAG, "Initialising map.");
    initMap();
    return v;
}

@Override
 public void onViewCreated (View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    resetButtons();
}

private void initMap(){
    UiSettings settings = getMap().getUiSettings();
    settings.setAllGesturesEnabled(true);
    settings.setMyLocationButtonEnabled(true);
    LatLng latLong = new LatLng(22.320542, 114.185715);
    getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(latLong,11));
}


/**
 * Move my position button at the bottom of map
 */
private void resetButtons()
{
    // Get a reference to the zoom buttons and the position button.
    ViewGroup v1 = (ViewGroup)this.getView();
    ViewGroup v2 = (ViewGroup)v1.getChildAt(0);
    ViewGroup v3 = (ViewGroup)v2.getChildAt(0);
    ViewGroup v4 = (ViewGroup)v3.getChildAt(1);

    // The My Position button
    View position =  (View)v4.getChildAt(0);
    int positionWidth = position.getLayoutParams().width;
    int positionHeight = position.getLayoutParams().height;

    // Lay out the My Position button.
    RelativeLayout.LayoutParams positionParams = new RelativeLayout.LayoutParams(positionWidth,positionHeight);
    int margin = positionWidth/5;
    positionParams.setMargins(0, 0, 0, margin);
    positionParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
    positionParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
    position.setLayoutParams(positionParams);

    // The Zoom buttons
    View zoom = (View)v4.getChildAt(2);
    int zoomWidth = zoom.getLayoutParams().width;
    int zoomHeight = zoom.getLayoutParams().height;

    // Lay out the Zoom buttons.
    RelativeLayout.LayoutParams zoomParams = new RelativeLayout.LayoutParams(zoomWidth, zoomHeight);
    zoomParams.setMargins(0, 0, 0, margin);
    zoomParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
    zoomParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
    zoom.setLayoutParams(zoomParams);
} 
}

2

এই সমস্যাটি মোকাবেলার জন্য একটি উপায়। ডিফল্ট বোতাম মুছুন এবং আপনার নিজের তৈরি করুন। অনক্রিয়েট বিবৃতিতে পরবর্তীটি যুক্ত করুন:

GoogleMap mMap = ((MapView) inflatedView.findViewById(R.id.mapview)).getMap();
LocationManager locationManager =    
(LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
locationManager.requestLocationUpdates(provider, 2000, 1,  this);

mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(false); // delete default button

Imagebutton imgbtn = (ImageButton) view.findViewById(R.id.imgbutton); //your button
imgbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new    
LatLng(location.getLatitude(),     
location.getLongitude()), 15));
        }
    });

2

এই কোড চেষ্টা করুন

private void resetMyPositionButton()
{
    Fragment fragment = ( (SupportMapFragment) getSupportFragmentManager().findFragmentById( R.id.map ) );
    ViewGroup v1 = (ViewGroup) fragment.getView();
    ViewGroup v2 = (ViewGroup)v1.getChildAt(0);
    ViewGroup v3 = (ViewGroup)v2.getChildAt(2);
    View position =  (View)v3.getChildAt(0);
    int positionWidth = position.getLayoutParams().width;
    int positionHeight = position.getLayoutParams().height;

    //lay out position button
    RelativeLayout.LayoutParams positionParams = new RelativeLayout.LayoutParams(positionWidth,positionHeight);
    int margin = positionWidth/5;
    positionParams.setMargins(margin, 0, 0, margin);
    positionParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
    positionParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
    position.setLayoutParams(positionParams);
}

2

এই বোতামটি মানচিত্রের বাম দিকে সরানো হয়েছিলআগে, আপনি বোতামের পুরানো নিয়মটি মুছে ফেলতে পারেন:

@Override
public void onMapReady(final GoogleMap googleMap) {
    this.map = googleMap;
    // Show location button
    View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
    // position on right bottom
    Log.l(Arrays.toString(rlp.getRules()), L.getLogInfo());
    int[] ruleList = rlp.getRules();
    for (int i = 0; i < ruleList.length; i ++) {
        rlp.removeRule(i);
    }
    Log.l(Arrays.toString(rlp.getRules()), L.getLogInfo());
    //Do what you want to move this location button:
    rlp.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
    rlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
}

0

আপনি নিম্নলিখিত পদ্ধতির ব্যবহার করতে পারেন:

    View myLocationParent = ((View) getView().findViewById(1).getParent());
    View myLocationParentParent = ((View) myLocationParent.getParent());

    // my position button

    int positionWidth = myLocationParent.getLayoutParams().width;
    int positionHeight = myLocationParent.getLayoutParams().height;

    // lay out position button
    FrameLayout.LayoutParams positionParams = new FrameLayout.LayoutParams(
            positionWidth, positionHeight);
    positionParams.setMargins(0, 100, 0, 0);

    myLocationParent.setLayoutParams(positionParams);

আপনি কীভাবে জানলেন যে ((দেখুন) getView ()। FindViewById (1) .getParent ()); লোকেশন ভিউ পাবেন?
রিডিসাকি

অ্যান্ড্রয়েড স্টুডিও ডিবাগারে প্রচুর দুর্দান্ত জিনিস রয়েছে;)
রোমান

0

আমি আমার টুকরো অ্যান্ড্রয়েডে একটি লাইন যুক্ত করেছি : লেআউট_মার্জিনটপ = "? অ্যাট্রি / অ্যাকশনবারসাইজ" এটি আমাকে সহায়তা করেছে


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.