我有一个带有一个NavigationView和两个不同RelativeLayouts的xml。 最初隐藏其中一个RelativeLayouts(我将onCreate()中的可见性更改为GONE)。 当我单击NavigationView内的按钮时,我希望隐藏的布局变得可见。
这是我的Java代码:
RelativeLayout imagenes,registro;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_invitado);
registro = (RelativeLayout) findViewById(R.id.registro);
imagenes = (RelativeLayout) findViewById(R.id.imagenes);
registro.setVisibility(View.INVISIBLE);
imagenes.setVisibility(View.VISIBLE);
mDrawerlayout= (DrawerLayout) findViewById(R.id.drawer_layout);
mToggle= new ActionBarDrawerToggle(this,mDrawerlayout,R.string.open,R.string.close);
mDrawerlayout.addDrawerListener(mToggle);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public void registrarse(View v){
mDrawerlayout.closeDrawers();
registro.setVisibility(View.VISIBLE);
}
这里是xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#fff">
<android.support.design.widget.NavigationView
app:headerLayout="@layout/popup_header"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:menu="@menu/popup_menu"
android:layout_gravity="start">
</android.support.design.widget.NavigationView>
<RelativeLayout
android:id="@+id/imagenes"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView2"
android:layout_marginTop="50dp"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:src="@drawable/cloud"
android:layout_gravity="center"
android:contentDescription="" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/registro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80FF4081">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/registrate"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="26sp"
android:textStyle="bold"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginTop="12dp" />
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="26dp"
android:ems="10"
android:gravity="center_horizontal"
android:hint="@string/email"
android:inputType="textEmailAddress"
android:layout_below="@+id/textView"
android:layout_alignParentStart="true" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:0)
由于您已将RelativeLayout
的高度和宽度设置为View.VISIBLE
,因此您将RelativeLayout
的可见性更改为match_parent
后才会看到imagenes
,所以registro
占据整个屏幕,位于ScrollView
之上。
尝试将它们放在registro.bringToFront()
内或调整其高度,或在将其显示后调用UnsafePointer
。
答案 1 :(得分:0)
imagenes
RelativeLayout
的高度和宽度与父级匹配,因此需要整个屏幕..我需要设置适当的高度以查看registro
RelativeLayout
或将其放入{ {1}}
答案 2 :(得分:0)
我可以修复你的代码。
1 - 修复DrawerLayout
createObject()
布局文件必须具有特定格式:
DrawerLayout
您有2 <DrawerLayout>
<Content Layout /> <!-- It can be linearlayout, framelayout etc -->
<NavigationView />
</DrawerLayout>
个和RelativeLayout
。您拥有的物品多于允许的物品且订单错误。因此,对于测试,我将NavigationView
和imagenes
移动到了一个LinearLayout`中(您可以改进并保留所有项目只在一个相对布局中......但是让我们再留一次)。
我没有更改任何内容...我只是将registro
移到文件底部,将NavigationView
移到RelativeLayout
LinearLayout
2 - 修复您的代码
由于两个<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/imagenes"
... >
....
</RelativeLayout>
<RelativeLayout
...>
.....
</RelativeLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
.... />
</android.support.v4.widget.DrawerLayout>
都放在RelativeLayout
中且垂直对齐,LinearLayout
对我们来说无效。因此,您应该使用View.INVISBLE
并按如下方式更改代码:
View.Gone
3 - 另一个可能性
由于您的@Override
protected void onCreate(Bundle savedInstanceState) {
....
imagenes.setVisibility(View.VISIBLE);
registro.setVisibility(View.GONE);
....
}
public void registrarse(View v){
mDrawerlayout.closeDrawers();
imagenes.setVisibility(View.GONE);
registro.setVisibility(View.VISIBLE);
}
未正确配置,我想知道您的导航项是否正在被调用。所以,也许,你的代码甚至没有调用DrawerLayout
..但是,但是很难用当前的代码附加。
对于任何情况,根据我上面提到的修改,如果您的代码正确调用registrarse(View v)
,它应该正常工作。