Search code examples
androidratingbar

setNumstars() not working even with WRAP_CONTENT


In a map, when I touch a marker an alert box will appear to show feedback ratings from user. I used setNumstars(5) and also used a layout with WRAP_CONTENT, but I did not get the desired output as there is large number of stars.

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


Solution

  • Add RatingBar in other view group parent such as given below... it will work...

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

    Here i have added Rating Bar inside LinearLayout.

    Hope this will help you.