我想在单击按钮时以编程方式向活动添加片段。我的activity_main.xml布局具有textViews,imageViews和一个按钮。当我单击该按钮时,我想使用imageView打开一个片段。我现在的问题是,片段隐藏在我的textViews和图像上方的一个小窗口中,而不是隐藏activity_main布局。我该如何解决呢?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@android:color/holo_orange_light"
    android:layout_height="match_parent"
    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:orientation="vertical"
    android:weightSum="1">

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/frag_container">
    </FrameLayout>

    <AnalogClock
        android:dial="@drawable/clock_dial"
        android:hand_hour="@drawable/clock_hour_hand"
        android:hand_minute="@drawable/clock_minute_hand"
        android:id="@+id/clock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_weight="0.75" />

    <TextView
        android:id="@+id/date"
        android:layout_marginLeft="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_marginLeft="8dp"
        android:paddingTop="8dp"
        android:id="@+id/location"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/sunrise"
        android:layout_marginLeft="8dp"
        android:paddingTop="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/sunset"
        android:layout_marginLeft="8dp"
        android:paddingTop="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sunset"
        android:textColor="@android:color/white"
        android:background="@android:color/black"
        android:id="@+id/button_sunset"
        android:layout_gravity="center_horizontal" />

</LinearLayout>


我的片段布局:

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

    <FrameLayout
        android:id="@+id/sky"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.61"
        android:background="@color/blue_sky">

        <ImageView
            android:id="@+id/sun"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center"
            android:src="@drawable/sun"/>
    </FrameLayout>

    <FrameLayout
        android:id="@+id/sea"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.39"
        android:background="@color/sea">

    </FrameLayout>

</LinearLayout>


我的活动:

    public class MainActivity extends AppCompatActivity {

    @BindView(R.id.date)
    TextView mDate;
    @BindView(R.id.location)
    TextView mLocation;
    @BindView(R.id.sunrise)
    TextView mSunrise;
    @BindView(R.id.sunset)
    TextView mSunset;
    @BindView(R.id.button_sunset)
    Button buttonSunset;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        setSunsetButton();

    }

public void setSunsetButton() {

        buttonSunset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SunsetFragment sunsetFragment = new SunsetFragment();
                FragmentManager fm = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fm.beginTransaction();
                fragmentTransaction.add(R.id.frag_container, sunsetFragment);
                fragmentTransaction.commit();
            }
        });
    }
}

最佳答案

保存FrameLayoutFragment的宽度和高度设置为wrap_content,这就是为什么它出现在小窗口中的原因。

最好用Activity替换Fragment的整个内容视图,甚至打开一个新的Activity,其中包含Fragment并将宽度和高度设置为match_parent

关于android - 单击按钮时以编程方式向 Activity 添加 fragment ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38418064/

10-13 04:19