当键盘可见时,EditText下方的按钮不可见

时间:2013-06-04 12:41:14

标签: android button keyboard visible

我有一个表单和一个按钮,当键盘可见时,应该可以看到,但我无法管理该状态。

  1. 在我的活动中显示:

    android:label="@string/app_name"
    android:windowSoftInputMode="adjustResize" 
    android:screenOrientation="portrait"
    android:configChanges="orientation"
    
  2. xml文件如下所示。

    <com.myapp.components.NonInvasiveScrollView      
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"    
        android:fillViewport="true"> 
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="none"
            android:fadingEdgeLength="0dp"    
            android:paddingBottom="10dp"    
            android:orientation="vertical" >
    
            <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>
        </LinearLayout>
    
    </com.myapp.components.NonInvasiveScrollView>
    
  3. 我不明白为什么softInputMode不起作用:/我只想用键盘上方的edittexts显示按钮。

4 个答案:

答案 0 :(得分:4)

在您的清单中,对于此活动,将windowSoftInputMode更改为:

android:windowSoftInputMode="adjustPan"

这将导致布局在显示键盘时向上移动,使按钮可见。

答案 1 :(得分: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;
        }
    }
});

答案 2 :(得分:0)

将整个布局包裹在一个而不是仅用于图像。这将确保您可以在键盘后面的按钮不可见时滚动。

答案 3 :(得分:0)

Button -> android:layout_alignParentBottom="true"中使用它固定了按钮的位置,然后滚动视图并显示按钮。

可能对您有帮助...