将视图添加到线性布局不可见

时间:2018-03-14 08:04:41

标签: android layout android-linearlayout

我在将编程按钮添加到linearLayout时遇到问题,第一个按钮被添加但其他按钮不可见。

nextButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            //show or load next

                Button curButton = new Button(myClass.this);
                curButton.setText("" + text);
                curButton.setBackgroundResource(R.drawable.tran_mini);

                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
                curButton.setLayoutParams(params);

                curButton.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0)
                    {
                        //do smg
                    }
                });

                paginglibrary.addView(curButton);
       }
 });

这是添加按钮的xml文件:

 <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="150dp"
        android:layout_height="match_parent"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true">

        <LinearLayout
            android:id="@+id/pagingView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:layout_centerHorizontal="true"
            android:layout_centerInParent="true"
            android:orientation="horizontal">

        </LinearLayout>
    </HorizontalScrollView>

我第一次点击nextButton按钮被添加并显示但第二次添加另一个按钮时,它没有显示。 我确信在查看以下代码时会添加它们:

 ViewGroup layout = (ViewGroup)findViewById(R.id.pagingView1);
 System.out.println("layout count: "+ layout.getChildCount());

计数显示该按钮已添加,但未显示。 知道可能是什么原因?

我尝试设置按钮的横坐标以确保它不在视图之外但仍然出现相同的情况。

1 个答案:

答案 0 :(得分:1)

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="new button"/>

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true">

        <LinearLayout
            android:id="@+id/pagingView1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="horizontal">

        </LinearLayout>

    </HorizontalScrollView>

</RelativeLayout>

唯一的区别在于HorizontalScrollView宽度。

btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                //show or load next

                Button curButton = new Button(MainActivity.this);
                curButton.setText("generated button");

                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);
                curButton.setLayoutParams(params);

                curButton.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View arg0)
                    {
                        //do smg
                    }
                });

                ll.addView(curButton);
            }
        });