0

这是我的布局结果

捕获

我的问题是我不希望“新资产”(单击新资产按钮时女巫显示)和“旧资产”之间的距离太长,“旧资产”必须在按钮下方并且“单击按钮时,新资产”应放置在旧资产之上。

这是我的 xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroller"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >


    <LinearLayout
        android:id="@+id/contain"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.01"
        android:orientation="vertical"
        android:padding="10dp" >

        <TextView
            android:id="@+id/a"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Build a list of significant assets for the organization"
            android:textSize="14sp"
            android:textStyle="bold" >
        </TextView>

         <Button
            android:id="@+id/addasset"
            style="@style/btnStyleBlue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text=" + add new asset" />

         <LinearLayout
                android:id="@+id/newa"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.01"
                android:orientation="vertical"
                android:padding="10dp" >

             </LinearLayout>

         <LinearLayout
                android:id="@+id/old"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.01"
                android:layout_gravity="top"
                android:orientation="vertical"
                android:padding="10dp" >

             </LinearLayout>



</LinearLayout>

</ScrollView>

和我的java代码:

@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.assets, container, false);

            final LinearLayout newa = (LinearLayout) rootView
                    .findViewById(R.id.newa);
            final LinearLayout old = (LinearLayout) rootView
                    .findViewById(R.id.old);

            Button add_asset = (Button) rootView.findViewById(R.id.addasset);
            add_asset.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {



                    TextView tv1 = new TextView(v.getContext());
                    tv1.setText("New asset ");
                    tv1.setTextSize(14);
                    tv1.setTypeface(null, Typeface.BOLD);
                    tv1.setPadding(0, 15, 0, 10);
                    newa.addView(tv1);
                }
            });

            TextView tv = new TextView(rootView.getContext());
            tv.setText("old asset ");
            tv.setTextSize(14);
            tv.setTypeface(null, Typeface.BOLD);
            tv.setPadding(0, 15, 0, 10);
            old.addView(tv);

            return rootView;
        }
4

2 回答 2

0

将线性布局的 xml 代码更改为此

<LinearLayout
        android:id="@+id/newa"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="10dp" >

</LinearLayout>

<LinearLayout
        android:id="@+id/old"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:orientation="vertical"
        android:padding="10dp" >

</LinearLayout>
于 2013-05-22T17:44:44.797 回答
0

首先,我认为你是误会了weights。父母layout应该有一个weightSumthen give childViews weights等于一些来根据您的需要分配他们占用的空间量。

其次,你有android:padding="10dp"每个LinearLayout,所以每个之间实际上会有 20dp padding。如果您不想要那个空间,请删除它们。

你有android:layout_height="match_parent"什么似乎是空的LinearLayout。这看起来可以删除。

我认为这weight可能是给你最大的麻烦。删除那个

但是,我想我会使用 a RelativeLayout,如果需要,您可以LinearLayouts保留两个,并指定android:layout_below="@+id/contain"将第二个放在LinearLayout第一个下方

另请注意,fill_parent已弃用,您应该match_parent改用

于 2013-05-22T17:46:36.027 回答