我想在单击按钮时以编程方式将片段添加到我的活动中。我的activity_main.xml布局有textViews,imageViews和一个按钮。当我点击该按钮时,我想用imageView打开一个片段。我现在的问题是,不是隐藏activity_main布局,而是在textViews和图像上方的小窗口中显示片段。我怎么能解决这个问题?`
<?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();
}
});
}
}
答案 0 :(得分:2)
ibv_wc
,FrameLayout
,其宽度和高度设置为Fragment
,这就是它出现在一个小窗口中的原因。
最好用wrap_content
替换Activity
的整个内容视图,或者甚至打开一个包含片段的新Fragment
并将宽度和高度设置为Activity
。