2014-11-17 2 views
0

Я строю простой заставку. В заставке есть две кнопки: вход и регистрация. Как только пользователь нажимает на вход, я загружаю макет с двумя полями edittext для ввода учетных данных, кнопкой для продолжения входа в систему и кнопкой отмены, чтобы вернуться к экрану заставки. Макет входа написан в scrollview. Однако, когда я нажимаю кнопку «Отмена», просмотр прокрутки по-прежнему присутствует. Я попытался установить видимость scrollview как ушедшую, но это приводит к сбою моего приложения. Я попытался установить видимость «Невидимый», а также сбой моего приложения. Я сделал много поисковых запросов и, похоже, нет решения.ScrollView Overlapping

package com.praveen.loginregi.app; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.ScrollView; 


public class MainActivity extends ActionBarActivity implements View.OnClickListener{ 
    Button signin; 
    Button signup; 
    Button cancel; 
    Button signincancel; 

    RelativeLayout login,register; 
    LinearLayout fromsignin,selectsingn,fromactvitysignup; 
    ScrollView sc; 
    ScrollView sc1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     signin=(Button)findViewById(R.id.btnSingIn); 
     signup=(Button)findViewById(R.id.btnSignUp); 
     login=(RelativeLayout)findViewById(R.id.rl); 
     register=(RelativeLayout)findViewById(R.id.rl1); 
     cancel=(Button)findViewById(R.id.btncancel); 
     signincancel=(Button)findViewById(R.id.btnSingIncancel); 
     sc=(ScrollView)findViewById(R.id.sc); 
     sc1=(ScrollView)findViewById(R.id.sc1); 

     fromsignin=(LinearLayout)findViewById(R.id.from_actvity_sign_in); 
     selectsingn=(LinearLayout)findViewById(R.id.selectsingn); 
     fromactvitysignup =(LinearLayout)findViewById(R.id.from_actvity_sign_up); 
     signin.setOnClickListener(this); 
     signup.setOnClickListener(this); 
     cancel.setOnClickListener(this); 
     signincancel.setOnClickListener(this); 

     selectsingn.setVisibility(View.VISIBLE); 



    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.btnSignUp: 

       System.out.println("hhhijoihhohouhouhhhjhjhkkhgjgggjghjhgjhhhg"); 


       selectsingn.setVisibility(View.INVISIBLE); 
       selectsingn.setVisibility(View.GONE); 




       register.setVisibility(View.VISIBLE); 
       fromactvitysignup.setVisibility(View.VISIBLE); 
       Animation ani2 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down); 
       fromactvitysignup.startAnimation(ani2); 




       return; 


     case R.id.btnSingIn: 
       System.out.println("djksfhjksdhdjkfhskjdhdskfjhfdkjhfksdjdfshkj"); 


       selectsingn.setVisibility(View.INVISIBLE); 

       login.setVisibility(View.INVISIBLE); 


       selectsingn.setVisibility(View.GONE); 



       fromsignin.setVisibility(View.VISIBLE); 
       login.setVisibility(View.VISIBLE); 

       Animation ani = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down); 
       fromsignin.startAnimation(ani); 
       return; 

      case R.id.btncancel: 




       register.setVisibility(View.INVISIBLE); 
       register.setVisibility(View.GONE); 
       fromactvitysignup.setVisibility(View.GONE); 

       selectsingn.setVisibility(View.VISIBLE); 
       sc1.setVisibility(View.INVISIBLE); 




       return; 

      case R.id.btnSingIncancel: 


       login.setVisibility(View.INVISIBLE); 
       login.setVisibility(View.GONE); 


       selectsingn.setVisibility(View.VISIBLE); 
       fromsignin.setVisibility(View.VISIBLE); 



       return; 

      default: 
       selectsingn.setVisibility(View.GONE); 
       fromsignin.setVisibility(View.GONE); 
       register.setVisibility(View.GONE); 
       fromactvitysignup.setVisibility(View.GONE); 


     } 

    } 
} 

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:paddingBottom="@dimen/activity_vertical_margin" 
       android:paddingLeft="@dimen/activity_horizontal_margin" 
       android:paddingRight="@dimen/activity_horizontal_margin" 
       android:paddingTop="@dimen/activity_vertical_margin" 
       tools:context=".MainActivity" 
       android:background="@drawable/fire_logo"> 



    <LinearLayout 
      android:id="@+id/from_actvity_sign_in" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:visibility="gone"> 

     <include 
       android:id="@+id/myid2" 
       layout="@layout/activity_sign_in" /> 
    </LinearLayout> 


    <LinearLayout 
      android:id="@+id/from_actvity_sign_up" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:visibility="gone"> 

     <include 
       android:id="@+id/myid3" 
       layout="@layout/activity_sign_up_screen" /> 
    </LinearLayout> 


    <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:background="@drawable/linearlayout_bg" 
      android:id="@+id/selectsingn" 
      android:padding="10dp" 
      android:visibility="gone" 
      > 

     <Button 
       android:id="@+id/btnSignUp" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:padding="10dp" 
       android:layout_margin="4dp" 
       android:text="Sign Up" 
       android:background="@drawable/button_default_bg" 
       style="@style/DefaultButtonText" 
       /> 
     <Button 
       android:id="@+id/btnSingIn" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:padding="10dp" 
       android:layout_margin="4dp" 
       android:text="Sign In" 
       style="@style/DefaultButtonText" 
       android:background="@drawable/button_default_bg" 
       /> 
    </LinearLayout> 

</RelativeLayout> 




Signin Layout/Signup Layout 

<

?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#80000000" android:fillViewport="false" android:id="@+id/sc"> 


    <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="@dimen/activity_vertical_margin" 
      android:paddingLeft="@dimen/activity_horizontal_margin" 
      android:paddingRight="@dimen/activity_horizontal_margin" 
      android:paddingTop="@dimen/activity_vertical_margin" 
      android:id="@+id/rl" 
      android:gravity="center" 
      android:layout_gravity="center" 
      android:orientation="vertical" 
      android:background="#ffffff"> 

     <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:padding="10dp" 
       android:gravity="center_vertical" 
       > 

      <EditText 
        android:id="@+id/etUserName" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/edittext_top_bg" 
        android:padding="10dp" 
        android:hint="Email" 
        android:textColorHint="#cccccc"/> 
      />/ android:drawableLeft="@drawable/email"/> 
      <EditText 
        android:id="@+id/etPass" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/edittext_bottom_bg" 
        android:layout_marginTop="-2dp" 
        android:padding="10dp" 
        android:hint="Password" 
        android:textColorHint="#cccccc" 
        android:password="true"/> 
      />/ android:drawableLeft="@drawable/password"/> 
      <Button 
        android:id="@+id/btnSingIns1" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:padding="10dp" 
        android:layout_margin="4dp" 
        android:text="Sign In" 
        style="@style/DefaultButtonText" 
        android:background="@drawable/button_default_bg" 
        /> 
      <Button 
        android:id="@+id/btnSingIncancel" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:padding="10dp" 
        android:layout_margin="4dp" 
        android:text="Cancel" 
        style="@style/DefaultButtonText" 
        android:background="@drawable/button_default_bg" 
        /> 
     </LinearLayout> 

    </RelativeLayout> 
</ScrollView> 

У меня есть один и тот же код XML для знака вверх, но с соответствующими переменными

 My logcat 



     java.lang.NullPointerException 
     at com.praveen.loginregi.app.MainActivity.onClick(MainActivity.java:203) 
     at android.view.View.performClick(View.java:4204) 
     at android.view.View$PerformClick.run(View.java:17355) 
     at android.os.Handler.handleCallback(Handler.java:725) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5041) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
     at dalvik.system.NativeStart.main(Native Method) 

Signup Xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#80000000" 
      android:id="@+id/sc1" 
     > 
    <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:paddingBottom="@dimen/activity_vertical_margin" 
      android:paddingLeft="@dimen/activity_horizontal_margin" 
      android:paddingRight="@dimen/activity_horizontal_margin" 
      android:paddingTop="@dimen/activity_vertical_margin" 
      android:id="@+id/rl1" 
      android:background="#ffffff" 
      android:layout_gravity="center" > 

     <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:padding="10dp" 
       > 

      <EditText 
        android:id="@+id/etEmail" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/edittext_top_bg" 
        android:padding="10dp" 
        android:hint="Email" 
        android:textColorHint="#bbbbbb" 
        /> 
      />/ android:drawableLeft="@drawable/email"/> 
      <EditText 
        android:id="@+id/etUserName" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/edittext_default_bg" 
        android:layout_marginTop="-2dp" 
        android:padding="10dp" 
        android:hint="User Name" 
        android:textColorHint="#bbbbbb" 
        /> 
      />/ android:drawableLeft="@drawable/user"/> 
      <EditText 
        android:id="@+id/etPass" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/edittext_bottom_bg" 
        android:layout_marginTop="-2dp" 
        android:padding="10dp" 
        android:hint="Password" 
        android:textColorHint="#bbbbbb" 
        android:password="true"/> 
      //android:drawableLeft="@drawable/password"/> 
      <Button 
        android:id="@+id/btnSignUpp" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:padding="10dp" 
        android:layout_margin="4dp" 
        android:text="Sign Up" 
        style="@style/DefaultButtonText" 
        android:background="@drawable/button_default_bg" 
        /> 


      <Button 
        android:id="@+id/btncancel" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:padding="10dp" 
        android:layout_margin="4dp" 
        android:text="cancel" 
        style="@style/DefaultButtonText" 
        android:background="@drawable/button_default_bg" 
        /> 
     </LinearLayout> 

    </RelativeLayout> 
</ScrollView> 
+0

пожалуйста, добавьте ваши коды XML здесь – prakash

+0

Опубликовать файл XML .. !! – Piyush

+0

попробуйте отправить xml, а также logcat. –

ответ

1

Короткий ответ:

Ваша проблема заключается в том, что вы меняете видимость @+id/rl1, которая является RelativeLayout вложенными в ScrollView в activity_sign_in.xml, поэтому при нажатии кнопки отмены и сделать RelativeLayout невидимым Scrollview с полупрозрачным фоном все еще видно.

Я думаю, что самым простым решением является использование идентификатора, который вы определяете в теге include (переменная fromsignin), чтобы включить/выключить видимость.

Более длинный ответ:

Глядя на ваш макет я не понимаю, почему ты просто не использовать Dialog для отображения sign_in, потому что вы на самом деле использовать ScrollView, чтобы затемнить фон, а затем гнездо a LinearLayout внутри RelativeLayout. Честно говоря, я не понимаю, зачем вам нужна эта структура, вы можете легко добиться такого же эффекта, указав sign_in как содержимое Dialog и удалив ScrollView и RelativeLayout из макета. Поскольку у меня нет файлов анимации, я просто не использовал его, поэтому, возможно, именно поэтому вы используете эту структуру, но RelativeLayout кажется мне бесполезным, так как вы можете центрировать гравитационные метки.

EDIT: Я только что протестировал это, и он отлично работает с вашим источником и компоновкой. Изменения видимости fromsignin в случае переключения для R.id.btnSingIncancel от VISIBLE Унесенных

case R.id.btnSingIncancel: 
       login.setVisibility(View.INVISIBLE); //this can be deleted 
       login.setVisibility(View.GONE);  //this too, and redundant as well. 
       selectsingn.setVisibility(View.VISIBLE); 
       fromsignin.setVisibility(View.GONE); //This line is the important one! 
       return; 
+0

Спасибо, momo за ответ, но не скрывая fromsign, не работает, и я искал Dialog в google, код кажется еще более утомительным http://developer.android.com/guide /topics/ui/dialogs.html....please предложите мне решение с этим контекстом – ananymous59

+0

Я добавил пример, проверьте его ;-) – momo

+0

no :(я уже пробовал это и попробовал еще раз .... если u клик отменить фон заполняется scrollview, экран всплеска -> sigin-> cancel Заставка -> signup-> cancel Заставка -> sigin-> can not anyess , когда я переключаюсь на вход, я не могу нажать любая из кнопок, вид прокрутки блокирует его – ananymous59