Java Android DK试图通过片段显示/隐藏部分UI
所以我对安卓DK非常陌生,在我开始尝试处理碎片之前,我一直航行得很好 在它的核心,我试图做的是在我的应用程序的屏幕上有一系列的按钮,用户按下哪个按钮都会改变屏幕上显示的文本/微调器/按钮 我决定如何通过片段来实现它。我不明白为什么我的片段没有显示出来,但是,这应该是一个相对简单的例子 我有一个相对简单的activity_main.xml。我已更改了变量名,但请参见以下内容:Java Android DK试图通过片段显示/隐藏部分UI,java,android,android-fragments,Java,Android,Android Fragments,所以我对安卓DK非常陌生,在我开始尝试处理碎片之前,我一直航行得很好 在它的核心,我试图做的是在我的应用程序的屏幕上有一系列的按钮,用户按下哪个按钮都会改变屏幕上显示的文本/微调器/按钮 我决定如何通过片段来实现它。我不明白为什么我的片段没有显示出来,但是,这应该是一个相对简单的例子 我有一个相对简单的activity_main.xml。我已更改了变量名,但请参见以下内容: <LinearLayout android:id="@+id/mainActivity" xmlns:androi
<LinearLayout android:id="@+id/mainActivity"
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:orientation="vertical"
android:animateLayoutChanges="true" >
<Button
android:id="@+id/buttonD"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/d_name"
android:onClick="dMenuButton" />
<RelativeLayout
android:id="@+id/fragment_container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<Button
android:id="@+id/buttonR"
android:layout_below="@id/fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/r_name"
android:onClick="rButton" />
</LinearLayout>
以及片段_d.xml
<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:orientation="vertical" >
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:text="@string/text1"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/numD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/text1"
android:layout_toRightOf="@id/text1" />
</RelativeLayout>
使用其各自的DFragment.java
public class DFragment extends Fragment {
static Spinner dSpinner;
ArrayAdapter<CharSequence> dAdapter;
RelativeLayout view;
public static DFragment newInstance() {
DFragment dFragment = new DFragment();
return dFragment ;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = (RelativeLayout) inflater.inflate(R.layout.fragment_d,
container, false);
createSpinners();
return view;
}
private void createSpinners() {
dSpinner = (Spinner) view.findViewById(R.id.numD);
dAdapter= ArrayAdapter.createFromResource(getActivity().getBaseContext(),
R.array.numD,
android.R.layout.simple_spinner_item);
}
}
public类DFragment扩展了片段{
静态纺纱机;
阵列适配器;
相对论;
公共静态数据片段newInstance(){
DFragment DFragment=新的DFragment();
返回数据碎片;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=(相对)充气器。充气(R.layout.fragment\u d,
货柜(虚假);;
createSpinners();
返回视图;
}
私有void createSpinners(){
dSpinner=(微调器)view.findviewbyd(R.id.numD);
dAdapter=ArrayAdapter.createFromResource(getActivity().getBaseContext(),
R.array.numD,
android.R.layout.simple\u微调器(项目);
}
}
目前,片段布局覆盖了它下面的按钮。任何强迫它向下推下面的组件的帮助都会很好
提前感谢。您在
fragment\u容器
的可视性方面肯定是正确的。您可以让它始终可见,然后允许片段事务更改容器中显示的内容
根据您的需求,您只需执行.replace(R.layout.fragment\u container,anotherFragment)
即可更改显示的片段(代码仅为伪代码)
至于按钮,您是将它们添加到活动\u main.xml
中,还是将它们添加到片段的布局中?只要在主活动布局中的fragment\u容器
布局之后添加新按钮/文本,就可以了。让我确切地知道你试图通过按钮/文本实现什么
祝你好运 是的,我正计划使用。替换,根据需要替换碎片。我正在将按钮添加到activity_main.xml。我想让按钮在下面显示它们各自的片段,并进一步向下推剩余的按钮。相反,当他们展示他们的片段时,他们掩盖了下面的所有按钮。我添加了代码以向按钮显示片段(这是有效的),并向xml添加了按钮,这些按钮在片段未显示时会正确显示,但在片段显示时会被覆盖(我猜是这样的)。我尝试通过以下方式在布局上使用invalidate:(LinearLayout)findViewById(R.id.mainActivity).invalidate();但这似乎也不能解决问题。即使将所有内容切换到相对布局也不能解决问题。片段似乎覆盖了其他按钮,而不是重新绘制整个布局,使用invalidate()并不能解决问题。按钮的
OnClick
上发生了什么?我可以看到您使用的是FragmentTransaction.show()
,但是您如何进一步“按下”其他按钮呢?您可以编辑您的问题以显示添加的按钮吗?我需要找出它们在xml或代码中的位置,以了解它们被覆盖的原因。我并没有进一步手动按下按钮,所以这可能是我的问题。我假设,如果将新按钮指定为包含片段的布局的“下方”,那么如果布局发生变化,它们将被迫向下移动。
public class DFragment extends Fragment {
static Spinner dSpinner;
ArrayAdapter<CharSequence> dAdapter;
RelativeLayout view;
public static DFragment newInstance() {
DFragment dFragment = new DFragment();
return dFragment ;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = (RelativeLayout) inflater.inflate(R.layout.fragment_d,
container, false);
createSpinners();
return view;
}
private void createSpinners() {
dSpinner = (Spinner) view.findViewById(R.id.numD);
dAdapter= ArrayAdapter.createFromResource(getActivity().getBaseContext(),
R.array.numD,
android.R.layout.simple_spinner_item);
}
}