Search code examples
android-linearlayoutandroid-custom-viewlayout-inflaternutiteq

My ViewLabel under Nutiteq doesn't work fine


I can populate the view for my ViewLabel in Nutiteq but I can't set right text in the text views of this Layout .

My code is following

    //Setting Popup Label if we click the area
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);      
    View labelView = inflater.inflate(R.layout.popup_field, null);

    //In order to get a dynamic "redimensionable" Ballon aka ViewLabel
    labelView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
                      MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
    labelView.layout(0, 0, labelView.getMeasuredWidth(), labelView.getMeasuredHeight());

    //labelView.measure(400, 400);
    //labelView.layout(100, 100, 400, 400);

    Log.info("drawField:: Nach Label fieldLabel = new ViewLabel... ");

    LinearLayout lLayout = (LinearLayout)labelView.findViewById(R.id.layout1);
    lLayout.setBackgroundColor(Color.RED);
    TextView farmNameTV  = (TextView)labelView.findViewById(R.id.farmName);
    TextView areaTV      = (TextView)labelView.findViewById(R.id.area);
    TextView statusTV    = (TextView)labelView.findViewById(R.id.status);

    farmNameTV.setTextColor(Color.BLACK);
    farmNameTV.setText("Farm CacoCaCoca");


    areaTV.setTextColor(Color.BLACK);
    String areaString = "12.34"
    areaTV.setText("Area "+areaString);

    statusTV.setTextColor(Color.BLACK);
    String statusString = "Status:::qwertzuiopasdfghjklyxcvbnm";
    statusTV.setText(statusString); 

*What you can see red is my inflated View.

enter image description here

R.layout.popup_field looks like this

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/farmName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/farmName"/>

<TextView
    android:id="@+id/area"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"       
    android:text="@string/area"/>

<TextView
    android:id="@+id/status"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"       
    android:text="@string/status"/>    

where strings are

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Nutiteq3D</string>
<string name="area">Area</string>
<string name="status">Status</string>
<string name="farmName">Farm Name</string>
</resources>

Have anyone done this task already? Can anyone help me to find out my error(s)?

With MapView of google Api is easy but I develop this with Nutiteq and just pure Activities, so, NO fragments and to inflate we typically need a ViewGroup and this ViewGroup under G-Api would be MapView so inherits from ViewGroup but in Nutiteq is not like this, MapView of Nutiteq inherits of android.view and I can't casting, I can just assign as ViewGroup a null in the call of inflateas you can see.

So, people, I'd be very thankful for your help.

Kind Regards


Solution

  • Solved! It didn't have to do with ViewLabel but the normal Android.View, I wanted to assign Text to TextView's after I declared my resizable View and therefore it didn't work fine.

    So the solution is writing all of tv.setText above labelView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); labelView.layout(0, 0, labelView.getMeasuredWidth(), labelView.getMeasuredHeight());