user6367252
user6367252

Reputation:

Adding items to the ScrollView dynamically make it doesn't scroll

I have a simple layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="300dp"
android:padding="15dp">


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

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

        </LinearLayout>

    </ScrollView>
</RelativeLayout>

Now, I inflate the outer RelativeLayout to retrieve the inner LinearLayout to put items in it.

RelativeLayout relative =  (RelativeLayout) LayoutInflater.from(activity).inflate(R.layout.gradient_pick_view, null);
LinearLayout view = (LinearLayout) relative.findViewById(R.id.scrollLayout);

After that I created a method to add some buttons to it:

for(int i=0;i<10;i++){
     LinearLayout wrapper = (LinearLayout) LayoutInflater.from(activity).inflate(R.layout.button_wrapper, null);
     Button button = (Button)wrapper .findViewById(R.id.button);
     view.addView(layout);
}

Everything works fine, but it doesn't scroll. What am I doing wrong here?

Here's the screenshot (displaying 7 of 10 buttons): enter image description here

I forgot to mention - I'm using a MaterialDialog library and add this RelativeLayout as a custom view to a dialog.

Upvotes: 1

Views: 1106

Answers (2)

user6367252
user6367252

Reputation:

I had a false parameter passed to a customView in a MaterialDialog.

dialog = new MaterialDialog.Builder(activity)
                    .title(R.string.about)
                    .customView(view, true)
                    .positiveText(R.string.changing_fragments)
                    .show();

As doc says:

If wrapInScrollView is true, then the library will place your custom view inside of a ScrollView for you. This allows users to scroll your custom view if necessary (small screens, long content, etc.). However, there are cases when you don't want that behavior. This mostly consists of cases when you'd have a ScrollView in your custom layout, including ListViews, RecyclerViews, WebViews, GridViews, etc. The sample project contains examples of using both true and false for this parameter.

Now it's working.

Upvotes: 0

Lalit Dhameliya
Lalit Dhameliya

Reputation: 348

Try to set the following attribute to your scrollview,

android:fillViewport="true"

above attribute is used to make your scrollview to use entire screen of your application.

Upvotes: 1

Related Questions