xml中的alignParentRight无法正常工作

时间:2014-02-04 09:17:06

标签: android android-layout android-fragments android-xml

我有一个通用布局,我附加片段:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/back"
     android:orientation="vertical" >

<include 
    android:id = "@+id/login_header"
    layout="@layout/header_layout"/>

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

我有一个片段,我想在屏幕的右侧显示。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/two_third_width"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_margin="@dimen/small_margin"
android:background="@drawable/stock_price_bg"
tools:context=".FoundItemFragment" >

</RelativeLayout>

布局显示为左对齐而非右对齐。当我为fragment_container FrameLayout着色时,我看到它占据了整个屏幕宽度。我在我的“FoundItemFragment extends Fragment implements OnClickListener”类中附加了带有以下代码的片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View fragView = null;
    try {
        fragView = inflater.inflate(layoutID, container, false);
        //LoadData(fragView);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return fragView;
}

传递给此例程的容器参数具有fragment_container布局的id,因此我不会将其附加到可能具有覆盖alignParentRight设置的设置的其他对象。为什么片段显示为左对齐而不是右对齐?

3 个答案:

答案 0 :(得分:2)

布局父级应为Relative Layout,以便alignParentRight可用。

您正在使用alignParentRight作为根元素RelativeLayout

答案 1 :(得分:1)

只需将容器xml编辑为

即可
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/back" >

<include 
    android:id = "@+id/login_header"
    layout="@layout/header_layout"
    android:layout_alignParentTop = "true"/>

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:below = "@id/login_header"
    android:layout_alignParentRight="true"/>

</LinearLayout>

答案 2 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/back"
     android:orientation="vertical" >

<include 
    android:id = "@+id/login_header"
    layout="@layout/header_layout"/>

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" />

</RelativeLayout>

由于generic布局保留了片段的容器,因此您应该将片段对齐/放置在那里。 片段视图的放置应在片段特定的xml文件

中完成