2013-06-04 4 views
0

У меня есть форма и кнопка внизу, которая должна быть видимой, когда клавиатура видна, но я как-то не могу управлять этим состоянием. Я знаю, что мой файл XML является своего рода запутано :)Кнопка ниже EditText не отображается, когда клавиатура видна

  1. В проявляется в деятельности у меня есть:

    андроид: метка = "@ строка/app_name" андроид: windowSoftInputMode = "adjustResize" андроид : screenOrientation = "portrait" android: configChanges = "orientation"

  2. xml-файл выглядит следующим образом. У меня есть проблемы, вставляя XML-файлы здесь, так что им жаль о беспорядке

    com.myapp.components.NonInvasiveScrollView
    андроида: layout_width = "match_parent" андроид: layout_height = "wrap_content" андроид: фон = "# FFFFFF"
    андроид: fillViewport = "истинный"

    LinearLayout андроида: layout_width = "match_parent" андроид: layout_height = "wrap_content" андроид: скроллбары = "нет" андроид: fadingEdgeLength = "0dp"
    андроид: paddingBottom = "10dp"
    андроида: ориентация = "вертикальный">

    <HorizontalScrollView 
        android:id="@+id/hor_scrollview" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1"   
        android:fadingEdgeLength="0dp" 
        android:scrollbars="none" 
        android:overScrollMode="never" 
        android:paddingTop="15dp" 
        > 
        <ImageView 
         android:id="@+id/vizual" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:src="@drawable/vizual"         
         />    
    </HorizontalScrollView> 
    
    <RelativeLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:layout_marginBottom="5dp" > 
    
        <RadioGroup 
         android:id="@+id/add_tabs" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="@dimen/add_fragment_margin" 
         android:layout_marginRight="@dimen/add_fragment_margin" 
         android:orientation="horizontal" 
         android:weightSum="2" > 
    
         <com.funtasty.appool.components.SegmentedControlButton 
          android:id="@+id/mam_napad" 
          android:layout_width="0dp" 
          android:layout_weight="1" 
          android:checked="true"      
          android:text="Mám nápad na aplikaci" 
          android:singleLine="true"               
          android:textSize="@dimen/smallText" /> 
    
         <com.myapp.components.SegmentedControlButton 
          android:id="@+id/umim_tvorit" 
          android:layout_width="0dp" 
          android:layout_weight="1" 
          android:checked="false" 
          android:singleLine="true" 
          android:text="Umím tvořit aplikace"      
          android:textSize="@dimen/smallText" /> 
        </RadioGroup> 
    
        <ViewFlipper 
         android:id="@+id/viewFlipper" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_below="@id/add_tabs" 
         android:layout_marginLeft="@dimen/add_fragment_margin" 
         android:layout_marginRight="@dimen/add_fragment_margin" 
         android:layout_marginTop="5dp" > 
    
         <LinearLayout 
          android:id="@+id/add_mam_napad" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:orientation="vertical" > 
    
          <TableRow 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_marginTop="@dimen/rowMarginTop" 
           > 
    
           <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center_vertical|left" 
            android:focusable="true" 
            android:src="@drawable/ico_name" /> 
    
           <EditText 
            android:id="@+id/name" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:hint="Jméno a příjmení" 
            android:singleLine="true" 
            android:inputType="text" 
            android:paddingBottom="5dp" 
            android:paddingLeft="10dp"  
            android:layout_marginLeft="2dp" 
            android:layout_marginRight="2dp" 
            android:background="@drawable/edittext" 
            android:focusable="true"        
            android:textSize="@dimen/bigText" 
            android:textColor="@color/gray"                
            android:maxLines="1" /> 
          </TableRow> 
    
          <TableRow 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_marginTop="@dimen/rowMarginTop" 
           > 
    
           <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center_vertical" 
            android:layout_marginRight="2dp" 
            android:src="@drawable/ico_mail" /> 
    
           <EditText 
            android:id="@+id/email" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:layout_weight="0" 
            android:hint="E-mail" 
            android:inputType="textEmailAddress" 
            android:background="@drawable/edittext" 
            android:paddingBottom="5dp" 
            android:paddingLeft="10dp"  
            android:layout_marginLeft="2dp" 
            android:layout_marginRight="2dp" 
            android:textColor="@color/gray"       
            android:textSize="@dimen/bigText" 
            android:focusable="true"       
            android:maxLines="1" /> 
          </TableRow> 
    
          <TableRow 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_marginTop="@dimen/rowMarginTop" 
           > 
    
           <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center_vertical" 
            android:layout_marginRight="2dp" 
            android:src="@drawable/ico_bulb" /> 
    
           <EditText 
            android:id="@+id/message" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:layout_weight="0" 
            android:background="@drawable/edittext" 
            android:paddingLeft="10dp"  
            android:layout_marginLeft="2dp" 
            android:layout_marginRight="2dp" 
            android:gravity="center_vertical" 
            android:textSize="@dimen/bigText" 
            android:textColor="@color/gray"        
            android:inputType="textMultiLine|textImeMultiLine" 
            android:maxLines="10" 
            android:focusable="true" 
            android:imeOptions="actionDone" 
            android:hint="Popiš svůj nápad" /> 
          </TableRow> 
         </LinearLayout> 
    
         <LinearLayout 
          android:id="@+id/add_umim_tvorit" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:orientation="vertical" > 
    
          <TableRow 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_marginTop="@dimen/rowMarginTop" 
           > 
    
           <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"        
            android:layout_gravity="center_vertical|left" 
            android:src="@drawable/ico_name" /> 
    
           <EditText 
            android:id="@+id/name_umim_tvorit" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:layout_weight="0" 
            android:hint="Jméno a příjmení" 
            android:singleLine="true" 
            android:textIsSelectable="true" 
            android:inputType="text" 
            android:paddingBottom="5dp" 
            android:background="@drawable/edittext" 
            android:paddingLeft="10dp"  
            android:focusable="true" 
            android:layout_marginLeft="2dp" 
            android:layout_marginRight="2dp" 
            android:textColor="@color/gray" 
            android:textSize="@dimen/bigText"           
            android:maxLines="1" /> 
          </TableRow> 
    
          <TableRow 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_marginTop="@dimen/rowMarginTop" 
           > 
    
           <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginRight="2dp" 
            android:layout_gravity="center_vertical" 
            android:src="@drawable/ico_mail" /> 
    
           <EditText 
            android:id="@+id/email_umim_tvorit" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:layout_weight="0" 
            android:hint="E-mail" 
            android:inputType="textEmailAddress" 
            android:paddingBottom="5dp" 
            android:background="@drawable/edittext" 
            android:paddingLeft="10dp"  
            android:layout_marginLeft="2dp" 
            android:layout_marginRight="2dp" 
            android:textColor="@color/gray" 
            android:textSize="@dimen/bigText" 
            android:focusable="true"        
            android:maxLines="1" /> 
          </TableRow> 
    
          <TableRow 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_marginTop="@dimen/rowMarginTop" 
           > 
    
           <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginRight="2dp" 
            android:layout_gravity="center_vertical" 
            android:src="@drawable/ico_bulb" /> 
    
           <EditText 
            android:id="@+id/message_umim_tvorit" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:layout_weight="0" 
            android:background="@drawable/edittext" 
            android:paddingLeft="10dp"  
            android:layout_marginLeft="2dp" 
            android:layout_marginRight="2dp" 
            android:textSize="@dimen/bigText" 
            android:textColor="@color/gray" 
            android:focusable="true" 
            android:inputType="textMultiLine"    
            android:hint="Napiš něco o sobě" /> 
          </TableRow> 
         </LinearLayout> 
        </ViewFlipper> 
    
        <Button 
         android:id="@+id/button_odeslat" 
         android:layout_width="match_parent" 
         android:layout_height="48dp" 
    
         android:layout_below="@id/viewFlipper" 
         android:layout_centerHorizontal="true"  
         android:gravity="center"   
         android:layout_marginLeft="@dimen/add_fragment_margin" 
         android:layout_marginRight="@dimen/add_fragment_margin"     
         android:background="@drawable/bg" 
         android:text="Odeslat" 
         android:textColor="@drawable/button_color" 
         android:focusable="true" 
         android:focusableInTouchMode="true" 
         android:enabled="false" 
    
         android:layout_marginTop="10dp" 
         android:textStyle="bold" /> 
    </RelativeLayout> 
    

Я не получить, почему softInputMode не работает:/I просто нужно, чтобы кнопка была видна с помощью редакторов над клавиатурами. Спасибо

+0

нажмите кнопку «Изменить текст», она будет видна – Charlie

+0

или с правой стороны, как и все остальные. – Warpzit

+0

, что против UX desing, потому что сначала вы заполните форму и только после этого вы нажмете на кнопку – vandus

ответ

0

boolean checkKeyboard = false;

final android.view.ViewGroup.LayoutParams cur_params = linearScroll.getLayoutParams(); //current layout params 

    final View activityRootView = findViewById(R.id.activity_image_layout); 
    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 


       Rect r = new Rect(); 

       activityRootView.getWindowVisibleDisplayFrame(r); 

       int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top); 
       int margin = activityRootView.getRootView().getHeight()-heightDiff; // screen height without keyboard layout 
       if (heightDiff > 100) { 
        if(!checkKeyboard){ 

         // set new layout params ...new LayoutParams(LayoutParams.FILL_PARENT, margin); 

        checkKeyboard = true;    
      } 
      } 
       else{ 
        // set first layout params cur_params 
        layout.setLayoutParams(cur_params); 
        checkKeyboard = false; 
       } 
     } 
    }); 
+0

, пожалуйста, что должно быть в этом случае ActivityRootView? – vandus

3

В манифесте, для этой деятельности, изменение windowSoftInputMode на:

android:windowSoftInputMode="adjustPan" 

Это заставит макет двигаться вверх, когда клавиатура отображается, что делает кнопку видимой.

+0

не работает:/уже пробовал раньше. – vandus

+0

Я не знаю, что такое «NonInvasiveScrollView», но попробуйте установить его layout_height для match_parent. – AfzalivE

+0

Это просто ScrollView, но есть некоторые способы обхода. – vandus

0

Оберните весь макет вместо a вместо изображения. Это позволит вам прокручивать, когда кнопка невидима за вашей клавиатурой.