我正在尝试创建两个视图,并且能够切换其中一个视图的可见性。问题是,当我尝试使用集合可见性使其中一个视图不可见时,它会影响它们。有谁会知道为什么会这样,我怎么能更好地处理这种情况呢?
public AlarmDropDownForm(Context context) {
super(context);
mInflater = LayoutInflater.from(context);
init();
}
View alarmBody;
View alarmHeader;
private void init() {
this.setOrientation(LinearLayout.VERTICAL);
alarmHeadereader = mInflater.inflate(R.layout.alarm_form_header, this);
alarmBody= mInflater.inflate(R.layout.alarm_form_layout, this);
alarmBody.setVisibility(View.GONE);
}
文件的XML如下
警报标题:
<?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">
<LinearLayout
android:id="@+id/help_title_gest"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="toggle_contents"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/alarm_set_button"
android:clickable="true"
android:text="Set Alarm"
android:textSize="20dp" />
<TextView
android:id="@+id/BACammt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:gravity="end"
android:onClick="toggle_contents"
android:textSize="20dp" />
</LinearLayout>
</LinearLayout>
报警机构:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RelativeLayout
android:id="@+id/hiddenView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/help_title_gest">
<LinearLayout
android:id="@+id/bacRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/hidden_text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="BAC:"
android:textSize="20dp" />
<Spinner
android:id="@+id/BACspinner1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_weight="1"
android:gravity="center_vertical" />
</LinearLayout>
<LinearLayout
android:id="@+id/sendTextRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/bacRow"
android:orientation="horizontal">
<TextView
android:id="@+id/send_text_text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="send text:"
android:textSize="20dp" />
<Switch
android:id="@+id/switch1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:id="@+id/alertContactsRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/sendTextRow"
android:orientation="horizontal">
<TextView
android:id="@+id/alert_contacts_text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="alert contacts:"
android:textSize="20dp" />
<Switch
android:id="@+id/switch2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
答案 0 :(得分:2)
使用alarmBody.setVisibility(View.INVISIBLE);
GONE
属性不仅会隐藏视图,还会隐藏容器
修改强>
合并两个观点
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/help_title_gest"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="toggle_contents"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/alarm_set_button"
android:clickable="true"
android:text="Set Alarm"
android:textSize="20dp" />
<TextView
android:id="@+id/BACammt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:gravity="end"
android:onClick="toggle_contents"
android:textSize="20dp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/hiddenView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/help_title_gest">
<LinearLayout
android:id="@+id/bacRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/hidden_text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="BAC:"
android:textSize="20dp" />
<Spinner
android:id="@+id/BACspinner1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_weight="1"
android:gravity="center_vertical" />
</LinearLayout>
<LinearLayout
android:id="@+id/sendTextRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/bacRow"
android:orientation="horizontal">
<TextView
android:id="@+id/send_text_text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="send text:"
android:textSize="20dp" />
<Switch
android:id="@+id/switch1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:id="@+id/alertContactsRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/sendTextRow"
android:orientation="horizontal">
<TextView
android:id="@+id/alert_contacts_text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="alert contacts:"
android:textSize="20dp" />
<Switch
android:id="@+id/switch2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
然后在代码中找到您的内容并隐藏它
private void init() {
this.setOrientation(LinearLayout.VERTICAL);
alarmHeadereader = mInflater.inflate(R.layout.alarm_form_header, this);
alarmBody= alarmHeadereader.findViewById(R.id.hiddenView);
alarmBody.setVisibility(View.GONE);
}