从活动中打开片段并使视图膨胀

时间:2016-07-05 08:45:49

标签: java android android-layout android-fragments

我想打开一个片段,想要给片段所在的视图充气。这可能吗? 我搜索了这些问题:

  1. error inflating class fragment fragment did not create a view;
  2. calling fragment from activity;
  3. how to open specific fragment from other activity onclick;
  4. open fragment from activity;
  5. how do i prevent overlapping in android;
  6. 我无法找到答案,或者我忽略了它。是否有可能当我的片段在onclick之后打开时,我的布局将按钮(beetInfosButton)推到我的片段下面(它被封装在scrollView中),所以我的片段没有重叠?我是否必须使用其他布局而不是RelativeLayout?或者这是不可能的。希望有人能理解我想要的东西。提前谢谢你 这是活动代码。

    public class InfoSeite extends AppCompatActivity implements BodenSeite.OnFragmentInteractionListener {
    
    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_info_seite);
    
    public void buttonBodenInfos(View view){
        getFragmentManager().beginTransaction().add(R.id.fragment_container,new BodenSeite()).commit();
        }
    

    活动XML文件

    <?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"
            android:background="#2fb215"
            android:id="@+id/infoSeite">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bodenInfosString"
                android:id="@+id/bodenInfosButton"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="79dp"
                android:onClick="buttonBodenInfos"/>
    
    
                <ScrollView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/scrollView2"
                    android:layout_toEndOf="@+id/bodenInfosButton"
                    android:layout_below="@+id/bodenInfosButton"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true" >
    
                <FrameLayout
                    android:id="@+id/fragment_container"
                    android:layout_height="wrap_content"
                    android:layout_width="match_parent" />
                </ScrollView>
    
        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/beetInfosString"
                android:id="@+id/beetInfosButton"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                android:onClick="buttonBeetInfos" />
    
        </RelativeLayout>
    

    片段XML的样本。

    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#2fb215"
        android:columnOrderPreserved="true"
        android:tag="BodenFragment"
        android:id="@+id/bodenFragment">
    
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/bodenArtenString"
            android:id="@+id/bodenSeiteUeberschrift"
            android:layout_row="0"
            android:layout_column="0"
            android:textSize="40dp"
            android:textAlignment="center" />
    

2 个答案:

答案 0 :(得分:2)

由于您使用的是RelativeLayout,因此您可以选择&#34;坚持&#34; Views相对于彼此 - 或他们的父母。

代码:

<RelativeLayout>
    <Button />

    <ScrollView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"/>

    <Button />

<RelativeLayout>

在你身上onClick

scrollView.setVisibility(View.GONE);  //View.VISIBLE, when you close the fragment

答案 1 :(得分:0)

尝试以下代码:

<?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"
    android:background="#2fb215"
    android:id="@+id/infoSeite">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bodenInfosString"
        android:id="@+id/bodenInfosButton"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="79dp"
        android:onClick="buttonBodenInfos"/>


        <ScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/scrollView2"
            android:layout_toEndOf="@+id/bodenInfosButton"
            android:layout_below="@+id/bodenInfosButton"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" >

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

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/beetInfosString"
        android:id="@+id/beetInfosButton"
        android:layout_below="@+id/scrollView2"
        android:onClick="buttonBeetInfos" />

</RelativeLayout>