在android studio中无法为片段添加重量参数?

时间:2016-07-26 09:20:07

标签: android layout

我正在尝试将重量参数添加到android studio中的片段xml,这样我的两个片段每个可以占用半个屏幕,但添加重量对布局没有影响。有趣的是,我仍然可以在正常活动视图中增加权重screen shot

这是我的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="io.designcoder.vivz.lifecycle.xml.ActivityFragmentXml">

<fragment
    android:id="@+id/fragment_xml_a"
    class="io.designcoder.vivz.lifecycle.xml.FragmentXmlA"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    tools:layout="@layout/fragment_xml_a"
    />
<fragment
    android:id="@+id/fragment_xml_b"
    class="io.designcoder.vivz.lifecycle.xml.FragmentXmlB"
    android:layout_width="match_parent"
    android:layout_below="@id/fragment_xml_a"
    android:layout_height="wrap_content"
    tools:layout="@layout/fragment_xml_b"
    />

</RelativeLayout>

3 个答案:

答案 0 :(得分:2)

记住:weight param只能在linearlayout中工作。如果你想让两个片段在水平方向上共享屏幕,那么将linearlayout的方向设为水平,并使每个片段的宽度为#34; 0dp&#34;或&#34; wrap_content&#34;这样你就可以加重它们。垂直方向相同。您可以在下面查看我的代码。 the weight example

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="horizontal"
    tools:context="com.example.dysaniazzz.testdemo.MainActivity">

   //the background only to distinguish the fragment
   <fragment
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
       android:layout_weight="1"
       android:background="@android:color/holo_red_light" />
  <fragment
      android:layout_width="wrap_content"
      android:layout_height="match_parent"
      android:layout_weight="1"
      android:background="@android:color/holo_green_light" />
</LinearLayout>

答案 1 :(得分:0)

您尝试使用以下代码:

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="cungxunu.cunghoangdao.cheng.myapplication.MainActivity">

    <fragment
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"/>
    <fragment
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"/>
</LinearLayout>

答案 2 :(得分:0)

你不应该使用相对布局,因为重量不会在那里工作。 所以用户线性布局。

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="io.designcoder.vivz.lifecycle.xml.ActivityFragmentXml">

<fragment
    android:id="@+id/fragment_xml_a"
    class="io.designcoder.vivz.lifecycle.xml.FragmentXmlA"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    tools:layout="@layout/fragment_xml_a"
    />
<fragment
    android:id="@+id/fragment_xml_b"
    class="io.designcoder.vivz.lifecycle.xml.FragmentXmlB"
    android:layout_width="match_parent"
    android:layout_below="@id/fragment_xml_a"
    android:layout_height="0dp"
    tools:layout="@layout/fragment_xml_b"
    />

</LinearLayout>
&#13;
&#13;
&#13;