SH7890
SH7890

Reputation: 555

Dynamically Created Layout not Showing

I've looked at this question here, however I still cannot find out what I'm doing wrong. There are no errors in Logcat and there definitely is data being passed to it to be made. Here's my setup:

This is all taking place below manually placed elements that I have placed in Android Studio. I have a ScrollView. Inside that ScrollView, I have a LinearLayout, parentLayout, that get's passed to this class. This method is supposed to add another Horizontal LinearLayout, layout, parentLayout. Then it is supposed to add a TextView, titleDisplay, and two Buttons to layout. So far I have only programmed just layout and titleDisplay. I tested it, and nothing was added. So before I program the other two buttons, I would like to know what I am doing wrong. Here's the Java Code:

public class FollowupOption {

private String displayName;
private JSONObject jsonInformation;
private Context context;
private LinearLayout parentLayout;

private LinearLayout layout;
private TextView titleDisplay;
private Button deleteButton, editButton;

public FollowupOption(String displayName, JSONObject jsonInformation,
                      Context context, LinearLayout parentLayout){
    this.displayName = displayName;
    this.jsonInformation = jsonInformation;
    this.context = context;
    this.parentLayout = parentLayout;
    buildLayout();
}

private void buildLayout(){
    //Horizontal Linear Layout to hold everything
    this.layout = new LinearLayout(context);
    this.layout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    this.layout.setOrientation(LinearLayout.HORIZONTAL);
    this.parentLayout.addView(this.layout);
    //Text View Displaying title of followup option.
    this.titleDisplay = new TextView(context);
    try {
        this.titleDisplay.setText(this.jsonInformation.getJSONObject("list").getString("title"));
    } catch(JSONException e){ e.printStackTrace(); }
    this.titleDisplay.setTextColor(0x8f142a); //Black
    this.titleDisplay.setTextSize(18);
    this.titleDisplay.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
    this.layout.addView(this.titleDisplay);
}
}

Here's my XML:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="10dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="38dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView15"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="0.22"
                android:gravity="center"
                android:text="@string/followup_text"
                android:textColor="@color/myRed"
                android:textSize="18sp" />

            <Button
                android:id="@+id/followup_add_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/transparent"
                android:text="@string/plus"
                android:textAlignment="center"
                android:textColor="@android:color/holo_green_dark"
                android:textSize="30sp"
                android:textStyle="bold" />
        </LinearLayout>

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="279dp"
            android:paddingLeft="7dp"
            android:paddingRight="7dp"
            android:paddingTop="7dp">

            <LinearLayout
                android:id="@+id/followup_parent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

            </LinearLayout>
        </ScrollView>

        <Button
            android:id="@+id/followup_new_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/new_followup_text" />
    </LinearLayout>
</merge>

If someone could let me know what I am doing wrong or a good way to debug something like this, that would be appreciated.

Upvotes: 3

Views: 854

Answers (2)

Anton Potapov
Anton Potapov

Reputation: 1275

Are you adding this.layout view to some view?

UPD: The problem is with your text color. Consider using the Color class to get color from its hex value or constants from that class.

Upvotes: 1

Milk
Milk

Reputation: 2655

Does your XML view (without the addition of the dynamic layout) take up the entire screen?

The new LinearLayout view will be added below the button. If the button is at the bottom of the screen, the layout will be added off the screen and therefore not visible.

You should add your new layout to the scroll view instead.

Upvotes: 0

Related Questions