2017-03-19 1 views
0

Dans une carte, lorsque je touche un marqueur, une boîte d'alerte apparaît pour afficher les évaluations de l'utilisateur. J'ai utilisé setNumstars (5) et j'ai aussi utilisé une mise en page avec WRAP_CONTENT, mais je n'ai pas obtenu la sortie désirée car il y a un grand nombre d'étoiles.setNumstars() ne fonctionne pas même avec WRAP_CONTENT

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 
List<String> location = new ArrayList<>(); 
double lat, lng; 
String pname,address,timing,tin; 
Double deflat=13.0826802, deflng=80.2707184; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_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); 
    location.addAll(patient_final.latlong);} @Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    for (String str : location) { 
     String temp[] = str.split(","); 
     lat = Double.parseDouble(temp[0]); 
     lng = Double.parseDouble(temp[1]); 
     pname = temp[2]; 
     address=temp[3]; 
     tin=temp[4]; 
     timing=temp[5]; 
     mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(pname+"-"+tin).snippet(address+" Timing: "+timing)); 
    } 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(deflat, deflng), 10.5f)); 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 

     mMap.setMyLocationEnabled(true); 
    } 

    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
     @Override 
     public boolean onMarkerClick(Marker marker) { 
      String snip[]=marker.getTitle().split("-"); 
      AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this); 
      builder.setTitle("Feedback for "+snip[0]); 
      builder.setMessage("Rate the shop based on your previous experience below "); 

      RatingBar rating = new RatingBar(MapsActivity.this); 
      rating.setNumStars(5); //here i used only 5 
      rating.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT)); 
      builder.setView(rating); 
      builder.setCancelable(false); 
      builder.setPositiveButton("OK", null); 
      builder.show(); 
      return false; 
     } 
    }); 


} 

}

SCreenShot

Répondre

1

Ajouter RatingBar dans d'autres parents du groupe de vue, comme indiqué ci-dessous ... il fonctionnera ...

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
     @Override 
     public boolean onMarkerClick(Marker marker) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(Main2Activity.this); 
      builder.setTitle("Feedback for "); 
      builder.setMessage("Rate the shop based on your previous experience below "); 

      LinearLayout ll = new LinearLayout(Main2Activity.this); 

      RatingBar rating = new RatingBar(Main2Activity.this); 
      rating.setNumStars(5); //here i used only 5 
      rating.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT)); 
      ll.addView(rating); 
      builder.setView(ll); 
      builder.setCancelable(false); 
      builder.setPositiveButton("OK", null); 

      builder.show(); 
      return false; 
     } 
    }); 

Ici, j'ai ajouté Bar Note à l'intérieur de LinearLayout.

J'espère que cela vous aidera.

+0

Merci beaucoup @Techierj .. A travaillé pour moi .. – Kughan

+0

N'importe quand @kughan :-) – Techierj