简体   繁体   English

如何避免软键盘与片段中的 EditText 重叠?

[英]How to avoid the softkeyboard overlapping the EditText in fragment?

I try both methods addling line android:windowSoftInputMode="adjustPan" in manifest or adding getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);我尝试两种方法在清单中添加行android:windowSoftInputMode="adjustPan"或添加getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); on Fragment onCreateView but still facing the same issue.在 Fragment onCreateView 但仍然面临同样的问题。 That when i type in the my custom EditText the screen does not auto resize.当我输入我的自定义 EditText 时,屏幕不会自动调整大小。

   here is my fragment:
            <?xml version="1.0" encoding="utf-8"?>
            <ScrollView 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:background="@color/white"
                android:fillViewport="true"
                tools:context=".Fragments.HelpersFrag.UseAvailablePackage.AddListBasicFragment">
            
            
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
            
                    <include layout="@layout/toolbar" />
            
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_marginStart="24dp"
                        android:layout_marginLeft="24dp"
                        android:layout_marginEnd="16dp"
                        android:layout_marginRight="16dp"
                        android:orientation="vertical">
            
                        <include layout="@layout/firstpage_indicator_layout" />
            
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:layout_marginTop="24dp"
                            android:orientation="horizontal">
            
                            <ImageView
                                android:layout_width="24dp"
                                android:layout_height="24dp"
                                android:contentDescription="@string/pencil_icon"
                                android:src="@drawable/pencil_icon" />
            
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:orientation="vertical">
            
                                <TextView
                                    style="@style/TextViewTitles"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="@string/basic" />
            
                                <include
                                    android:id="@+id/edt_jobTitle"
                                    layout="@layout/custom_edittext" />
            
                                <include
                                    android:id="@+id/cbAceptCreditCard"
                                    layout="@layout/checkbox_layout" />
            
                                <include
                                    android:id="@+id/cbCoupons"
                                    layout="@layout/checkbox_layout" />
            
            
                                <include
                                    android:id="@+id/cbSos"
                                    layout="@layout/checkbox_layout" />
            
                                <include
                                    android:id="@+id/cbNonSmoker"
                                    layout="@layout/checkbox_layout" />
            
            
                            </LinearLayout>
                        </LinearLayout>
            
            
                    </LinearLayout>
            
                </LinearLayout>
            
            
            </ScrollView>
            
        
        My Custom EditText:
            
            <?xml version="1.0" encoding="utf-8"?>
            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:are="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:layout_marginTop="15dp"
                android:background="@drawable/boundaries">
            
                <ScrollView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_above="@+id/bottombar"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentLeft="true"
                    android:padding="5dp">
            
                    <com.chinalwb.are.AREditText
                        android:id="@+id/arEditText"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="top|left"
                        android:hint="@string/job_description" />
                </ScrollView>
            
                <LinearLayout
                    android:id="@+id/bottombar"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_alignParentBottom="true"
                    android:gravity="center"
                    android:padding="5dp"
                    android:orientation="horizontal"
                    android:paddingEnd="8dp"
                    android:paddingRight="8dp"
                    android:weightSum="1000"
                    tools:ignore="RtlSymmetry">
            
                    <com.chinalwb.are.styles.toolbar.ARE_ToolbarDefault
                        android:id="@+id/areToolbar"
                        android:layout_width="0dp"
                        android:layout_height="20dp"
                        android:layout_weight="1000"
                        android:gravity="center_vertical"/>
            
                    <ImageButton
                        android:id="@+id/btnUnlink"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:layout_marginStart="11dp"
                        android:layout_marginLeft="11dp"
                        android:background="@color/transparent_color"
                        android:contentDescription="@string/text_unlink"
                        android:scaleType="fitCenter"
                        android:src="@drawable/unlink_icon" />
            
                    <ImageButton
                        android:id="@+id/btnUndo"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:layout_marginStart="11dp"
                        android:layout_marginLeft="11dp"
                        android:background="@color/transparent_color"
                        android:contentDescription="@string/text_undo"
                        android:scaleType="fitCenter"
                        android:src="@drawable/undo_icon" />
            
                    <ImageButton
                        android:id="@+id/btnRedo"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:layout_marginStart="11dp"
                        android:layout_marginLeft="11dp"
                        android:background="@color/transparent_color"
                        android:contentDescription="@string/text_redo"
                        android:scaleType="fitCenter"
                        android:src="@drawable/redo_icon" />
            
                </LinearLayout>
            </RelativeLayout>
            
         checkbox
            
                <?xml version="1.0" encoding="utf-8"?>
                <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:button="@drawable/checkbox_selector"
                    android:fontFamily="@font/raleway_bold"
                    android:text="@string/financial_planning"
                    android:textColor="@color/texthint_color"
                    android:textSize="13sp"
                    android:padding="10dp"
                    android:theme="@style/CheckBox" />
            
         AddListFragment.java
            
            
                package com.blendev.niffty.Fragments.HelpersFrag.UseAvailablePackage;
                
                import android.annotation.SuppressLint;
                import android.os.Bundle;
                
                import androidx.annotation.NonNull;
                import androidx.appcompat.app.AppCompatActivity;
                import androidx.appcompat.widget.Toolbar;
                import androidx.fragment.app.Fragment;
                
                import android.util.Log;
                import android.view.LayoutInflater;
                import android.view.View;
                import android.view.ViewGroup;
                import android.view.WindowManager;
                import android.widget.Button;
                import android.widget.CheckBox;
                import android.widget.EditText;
                import android.widget.ImageButton;
                import android.widget.ImageView;
                
                import com.blendev.niffty.Constants.Constants;
                import com.blendev.niffty.Fragments.BaseFragment;
                import com.blendev.niffty.R;
                import com.chinalwb.are.AREditText;
                import com.chinalwb.are.styles.toolbar.IARE_Toolbar;
                import com.chinalwb.are.styles.toolitems.ARE_ToolItem_Bold;
                import com.chinalwb.are.styles.toolitems.ARE_ToolItem_Italic;
                import com.chinalwb.are.styles.toolitems.ARE_ToolItem_Link;
                import com.chinalwb.are.styles.toolitems.ARE_ToolItem_ListBullet;
                import com.chinalwb.are.styles.toolitems.ARE_ToolItem_ListNumber;
                import com.chinalwb.are.styles.toolitems.IARE_ToolItem;
                import com.google.android.material.snackbar.Snackbar;
                
                import java.util.ArrayList;
                import java.util.List;
                
                import ren.qinc.edit.PerformEdit;
                
                
                public class AddListBasicFragment extends BaseFragment {
                    Button btnNext;
                    CheckBox cbCreditCard, cbCoupons, cbSos, cbNonSmoker;
                    View view;
                    private IARE_Toolbar mToolbar;
                    private AREditText mEditText;
                    PerformEdit mPerformEdit;
                    EditText edtTitle;
                    ImageButton btnUndo, btnRedo, btnUnlink;
                    private static final String ARG_PARAM1 = "param1";
                    private static final String ARG_PARAM2 = "param2";
                    String selectedText;
                    private String mParam1;
                    private String mParam2;
                    List arrayList;
                
                    public AddListBasicFragment() {
                    }
                
                
                    public static AddListBasicFragment newInstance(String param1, String param2) {
                        AddListBasicFragment fragment = new AddListBasicFragment();
                        Bundle args = new Bundle();
                        args.putString(ARG_PARAM1, param1);
                        args.putString(ARG_PARAM2, param2);
                        fragment.setArguments(args);
                        return fragment;
                    }
                
                    @Override
                    public void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        if (getArguments() != null) {
                            mParam1 = getArguments().getString(ARG_PARAM1);
                            mParam2 = getArguments().getString(ARG_PARAM2);
                        }
                    }
                
                    @Override
                    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                                             Bundle savedInstanceState) {
                        view = inflater.inflate(R.layout.fragment_add_list_basic, container, false);
                        getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
                        initView();
                        initToolbar();
                
                        return view;
                    }
                
                    void initView() {
                        Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
                        ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
                        toolbar.setTitle("");
                
                        arrayList = new ArrayList<String>();
                
                        ImageButton btnClose = (ImageButton) view.findViewById(R.id.btnClose);
                        edtTitle = view.findViewById(R.id.edt_jobTitle);
                        btnNext = view.findViewById(R.id.btnNext_id);
                
                        cbCreditCard = view.findViewById(R.id.cbAceptCreditCard);
                        cbCoupons = view.findViewById(R.id.cbCoupons);
                        cbSos = view.findViewById(R.id.cbSos);
                        cbNonSmoker = view.findViewById(R.id.cbNonSmoker);
                
                        btnUndo = view.findViewById(R.id.btnUndo);
                        btnRedo = view.findViewById(R.id.btnRedo);
                        btnUnlink = view.findViewById(R.id.btnUnlink);
                
                        cbCreditCard.setText(R.string.cbAcceptCreditCard);
                        cbCoupons.setText(R.string.cbCoupons);
                        cbSos.setText(R.string.cbSosHelper);
                        cbNonSmoker.setText(R.string.cbNonSmoker);
                        edtTitle.setHint(R.string.job_title);
                
                        btnClose.setOnClickListener(this);
                        btnNext.setOnClickListener(this);
                        btnUndo.setOnClickListener(this);
                        btnRedo.setOnClickListener(this);
                        btnUnlink.setOnClickListener(this);
                
                
                    }
                
                    private void initToolbar() {
                        mToolbar = view.findViewById(R.id.areToolbar);
                
                        IARE_ToolItem bold = new ARE_ToolItem_Bold();
                        IARE_ToolItem italic = new ARE_ToolItem_Italic();
                        IARE_ToolItem listNumber = new ARE_ToolItem_ListNumber();
                        IARE_ToolItem listBullet = new ARE_ToolItem_ListBullet();
                        IARE_ToolItem link = new ARE_ToolItem_Link();
                
                
                        mToolbar.addToolbarItem(bold);
                        mToolbar.addToolbarItem(italic);
                        mToolbar.addToolbarItem(listNumber);
                        mToolbar.addToolbarItem(listBullet);
                        mToolbar.addToolbarItem(link);
                        mEditText = view.findViewById(R.id.arEditText);
                        mEditText.setTextSize(13);
                        mEditText.setToolbar(mToolbar);
                        mPerformEdit = new PerformEdit(mEditText);
                
                        bold.getStyle().getImageView().setImageResource(R.drawable.bold_icon);
                        bold.getStyle().getImageView().setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                
                        italic.getStyle().getImageView().setImageResource(R.drawable.italic_icon);
                        italic.getStyle().getImageView().setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                
                
                        try {
                
                            listNumber.getStyle().getImageView().setImageResource(R.drawable.numbering_icon);
                            listBullet.getStyle().getImageView().setImageResource(R.drawable.bullet_icon);
                            link.getStyle().getImageView().setImageResource(R.drawable.link_icon);
                        } catch (Exception e) {
                            Log.e("ERROR: ", e.toString());
                        }
                
                
                    }
                
                    @SuppressLint("NonConstantResourceId")
                    @Override
                    public void onClick(View v) {
                        switch (v.getId()) {
                            case R.id.btnNext_id:
                                String jobTitle = edtTitle.getText().toString();
                                String jobDescription = mEditText.getText().toString();
                                validateInputs(jobTitle, jobDescription);
                                break;
                            case R.id.btnClose:
                                getActivity().onBackPressed();
                                break;
                            case R.id.btnUndo:
                                mPerformEdit.undo();
                                break;
                            case R.id.btnRedo:
                                mPerformEdit.redo();
                                break;
                            case R.id.btnUnlink:
                                break;
                
                
                        }
                    }
                
                    void validateInputs(String jobTitle, String jobDescription) {
                        if (jobTitle.isEmpty() || jobDescription.isEmpty()) {
                            Log.d("TAG", "String field empty");
                            Snackbar snackBar = Snackbar.make(getActivity().findViewById(android.R.id.content),
                                    "Please fill the requirements....", Snackbar.LENGTH_LONG);
                            snackBar.show();
                
                        } else {
                            Bundle bundle = new Bundle();
                            bundle.putString(Constants.JOB_TITLE, jobTitle);
                            bundle.putString(Constants.JOB_DESCRIPTION, jobDescription);
                
                            arrayList.clear();
                            if (cbCreditCard.isChecked()) {
                                arrayList.add(cbCreditCard.getText());
                            }
                            if (cbCoupons.isChecked()) {
                                arrayList.add(cbCoupons.getText());
                            }
                            if (cbSos.isChecked()) {
                                arrayList.add(cbSos.getText());
                            }
                            if (cbNonSmoker.isChecked()) {
                                arrayList.add(cbNonSmoker.getText());
                            }
                
                            Log.d("TAG", "List size: " + arrayList.size());
                            Fragment imgFileFragment = new ImagesFilesFragment();
                            imgFileFragment.setArguments(bundle);
                
                
                            this.changeFragment(imgFileFragment, Constants.ADD_LIST_BASIC_FRAGMENT);
                        }
                    }
                }
            
            
            Manifest
            
             
            
                <activity
                            android:name=".Activities.MainScreenActivity"
                            android:theme="@style/AppTheme.NoActionBar"
                            android:windowSoftInputMode="adjustPan"/>
            
    
            
            
            
               

Try this in the manifest of the particular activity在特定活动的清单中尝试这个

<activity
android:name=".YourActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize/>

or in the oncreate of the activity或在活动的oncreate中

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM