调整线性布局的位置

时间:2013-05-22 17:33:49

标签: android android-layout

这是我的布局

的结果

capture

我的问题是,我不希望“新资产”(点击按钮新资产时显示女巫)和“旧资产”之间的距离太长,“旧资产”必须低于单击按钮时,按钮和“新资产”应放在旧资产的顶部。

这是我的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;
        }

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

首先,我认为你是误解weights。父layout应该有一个weightSum,然后让孩子Views weights等于一些,根据您的需要分配他们占用的空间。

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

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

我认为weight可能是给你带来最大麻烦的。删除

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

另请注意,fill_parent已弃用,您应使用match_parent代替