当用户按下按钮时,我希望片段B显示在左侧,如下所示:
现在我的代码就是这样做的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ViewGroup
android:id="@+id/leftContainer"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#ffff0000" />
<ViewGroup
android:id="@+id/rightContainer"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="2"
android:background="#ff00ffff" />
</LinearLayout>
android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.leftContainer, fragmentA);
ft.add(R.id.rightContainer, fragmentB);
ft.commit();
不幸的是,所有这一切都给了我一个黑屏。我甚至没有看到碎片的背景颜色。
答案 0 :(得分:1)
你可以在添加B和A的情况下开始布局,但是将B的可见性设置为“GONE”吗?然后,当您想要显示B时,请更改其可见性。
如果我这样做,我会将它们都放在LinearLayout中。我将B的宽度设置为0dp,将layout_weight设置为1.我将A的宽度设置为0dp,将layout_weight设置为2.当B消失时,A将填充整个布局,当B出现时,您将得到一个布局1/3 B和2/3 A。
ETA:这是一些代码:
RES /布局/ main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topLevel"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="150dp"
>
<TextView
android:id="@+id/B"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="fill_parent"
android:text="B"
android:background="#f00"
android:textSize="36sp"
android:gravity="center"
android:visibility="gone"
/>
<TextView
android:id="@+id/A"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="fill_parent"
android:text="A"
android:background="#00f"
android:textSize="36sp"
android:gravity="center"
/>
</LinearLayout>
FooApp.java:
package org.efalk.fooapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class FooApp extends Activity implements View.OnClickListener {
private TextView A, B;
boolean gone = true;
@Override
public void onCreate(Bundle savedState)
{
super.onCreate(savedState);
setContentView(R.layout.main);
A = (TextView)findViewById(R.id.A);
B = (TextView)findViewById(R.id.B);
A.setOnClickListener(this);
}
@Override
public void onClick(View v) {
gone = !gone;
B.setVisibility(gone ? View.GONE : View.VISIBLE);
}
}
答案 1 :(得分:0)
您需要以xml或其他方式创建布局,以用作这些片段的容器。然后只需在片段事务中添加片段A.然后,您的布局中将有一些viewgroup可以添加片段A,您需要指定要在事务中添加片段的视图组。此外,您需要确保在事务上调用commit以使更改生效。如果您正在寻找一些不错的过渡等,那么您需要更多地思考如何构建布局以及添加片段的逻辑等。
答案 2 :(得分:0)
答案是:
add B
add A
call ft.hide(B);
然后在需要时:
call ft.show(B);