首页 > 解决方案 > android内部应用程序的自定义键盘

问题描述

我为android制作了一个程序,但我遇到了问题。我还在我的应用程序中使用了导航抽屉和片段。我在实习生里查了很多资料,但是没有找到,我想要的。
我想在我的应用程序中制作一个自定义键盘。我做了这个

<LinearLayout
        android:visibility="gone"
        android:id="@+id/keyBoard"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:gravity="bottom"
        android:layout_gravity="bottom"
        android:background="@color/colorPrimary"
        android:orientation="vertical">
        <LinearLayout
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal">
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphE"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_e"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphPi"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_pi"/>
            <Button
                android:id="@+id/graphLeftBracket"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_bracket_left"/>
            <Button
                android:id="@+id/graphRightBracket"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_bracket_right"/>
            <Button
                android:id="@+id/graphLeftSquareBracket"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_bracket_square_left"/>
            <Button
                android:id="@+id/graphRightSquareBracket"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_bracket_square_right"/>
            <Button
                android:id="@+id/graphDegree"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_degree"/>
            <Button
                android:id="@+id/graphDelete"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:layout_gravity="center_horizontal"
                android:drawableBottom="@drawable/ic_clear"/>
        </LinearLayout>

        <LinearLayout
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal">
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphAcos"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="2"
                android:text="@string/key_acos"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphCos"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_cos"/>
            <Button
                android:id="@+id/graphX"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/button_x"/>
            <Button
                android:id="@+id/graphOne"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_one"/>
            <Button
                android:id="@+id/graphTwo"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_two"/>
            <Button
                android:id="@+id/graphThree"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_three"/>
            <Button
                android:id="@+id/graphMultiply"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:layout_gravity="center_horizontal"
                android:drawableBottom="@drawable/ic_multiply"/>
        </LinearLayout>

        <LinearLayout
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal">
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphAtan"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="2"
                android:text="@string/key_atan"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphTan"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_tan"/>
            <Button
                android:id="@+id/graphY"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/button_y"/>
            <Button
                android:id="@+id/graphFour"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_four"/>
            <Button
                android:id="@+id/graphFive"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_five"/>
            <Button
                android:id="@+id/graphSix"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_six"/>
            <Button
                android:id="@+id/graphSum"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:layout_gravity="center_horizontal"
                android:drawableBottom="@drawable/ic_add"/>
        </LinearLayout>

        <LinearLayout
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal">
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphAsin"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="2"
                android:text="@string/key_asin"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphSin"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_sin"/>
            <Button
                android:id="@+id/graphModule"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_module"/>
            <Button
                android:id="@+id/graphSeven"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_seven"/>
            <Button
                android:id="@+id/graphEight"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_eight"/>
            <Button
                android:id="@+id/graphNine"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_nine"/>
            <Button
                android:id="@+id/graphMinus"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:layout_gravity="center_horizontal"
                android:drawableBottom="@drawable/ic_minus"/>
        </LinearLayout>

        <LinearLayout
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal">
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphAcot"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="2"
                android:text="@string/key_acot"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphCot"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_cot"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphLn"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_ln"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphLog"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_log"/>
            <Button
                android:textAllCaps="false"
                android:id="@+id/graphLg"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_lg"/>
            <Button
                android:id="@+id/graphZero"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/key_zero"/>
            <Button
                android:id="@+id/graphDivizion"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_weight="1"
                android:text="@string/divizion"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="5dp">
        </LinearLayout>
    </LinearLayout>

我在我的程序中制作了一个数学键盘。比我做的editText,将在哪里从我的键盘添加文本

<TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TableRow>
            <Button
                android:theme="@style/Widget.AppCompat.Button.Colored"
                android:layout_weight="1"
                android:gravity="center"
                android:id="@+id/buttonClick"
                android:layout_width="10dp"
                android:layout_height="45dp"
                android:text="@string/Calc"/>

            <EditText
                android:layout_weight="1"
                android:id="@+id/editGraphText"
                android:layout_width="200dp"
                android:layout_height="45dp"
                android:inputType="textPersonName"
                android:text=""/>

            <Button
                android:id="@+id/buttonClear"
                android:layout_width="45dp"
                android:layout_height="45dp"
                android:gravity="center"
                android:text="@string/Clear" />

        </TableRow>
    </TableLayout>

然后我需要隐藏我的键盘并再次打开它。
当我隐藏我的键盘并再次打开它时,我的代码不起作用。
我检查了按钮。按钮有效,但 editText 没有改变。
这里是java上的代码

        keyBoard = (LinearLayout) view.findViewById(R.id.keyBoard);

        editText = (EditText) view.findViewById(R.id.editGraphText);
        editText.setInputType(InputType.TYPE_NULL);

        buttonSin = (Button) view.findViewById(R.id.graphSin);
        buttonCos = (Button) view.findViewById(R.id.graphCos);
        buttonTan = (Button) view.findViewById(R.id.graphTan);
        buttonCot = (Button) view.findViewById(R.id.graphCot);
        buttonAsin = (Button) view.findViewById(R.id.graphAsin);
        buttonAcos = (Button) view.findViewById(R.id.graphAcos);
        buttonAcot = (Button) view.findViewById(R.id.graphAcot);
        buttonAtan = (Button) view.findViewById(R.id.graphAtan);
        buttonMultiply = (Button) view.findViewById(R.id.graphMultiply);
        buttonSum = (Button) view.findViewById(R.id.graphSum);
        buttonDegree = (Button) view.findViewById(R.id.graphDegree);
        buttonMinus = (Button) view.findViewById(R.id.graphMinus);
        buttonDivizion = (Button) view.findViewById(R.id.graphDivizion);
        buttonLog = (Button) view.findViewById(R.id.graphLog);
        buttonLg = (Button) view.findViewById(R.id.graphLg);
        buttonPi = (Button) view.findViewById(R.id.graphPi);
        buttonE = (Button) view.findViewById(R.id.graphE);
        buttonLeftBracket = (Button) view.findViewById(R.id.graphLeftBracket);
        buttonLeftSquareBracket = (Button) view.findViewById(R.id.graphLeftSquareBracket);
        buttonRightSquareBracket = (Button) view.findViewById(R.id.graphRightSquareBracket);
        buttonRightBracket = (Button) view.findViewById(R.id.graphRightBracket);
        buttonOne = (Button) view.findViewById(R.id.graphOne);
        buttonTwo = (Button) view.findViewById(R.id.graphTwo);
        buttonThree = (Button) view.findViewById(R.id.graphThree);
        buttonFour = (Button) view.findViewById(R.id.graphFour);
        buttonFive = (Button) view.findViewById(R.id.graphFive);
        buttonSix = (Button) view.findViewById(R.id.graphSix);
        buttonSeven = (Button) view.findViewById(R.id.graphSeven);
        buttonEight = (Button) view.findViewById(R.id.graphEight);
        buttonNine = (Button) view.findViewById(R.id.graphNine);
        buttonZero = (Button) view.findViewById(R.id.graphZero);
        buttonModule = (Button) view.findViewById(R.id.graphModule);
        buttonX = (Button) view.findViewById(R.id.graphX);
        buttonY = (Button) view.findViewById(R.id.graphY);
        buttonLn = (Button) view.findViewById(R.id.graphLn);
        buttonClear = (Button) view.findViewById(R.id.graphDelete);

        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                keyBoard.setVisibility(View.VISIBLE);
            }
        });

    buttonSin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finalText += "sin(";
            editText.setText(finalText);
        }
    });

    buttonCos.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finalText += "cos(";
            editText.setText(finalText);
        }
    });

    buttonTan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finalText += "tan(";
            editText.setText(finalText);
        }
    });

    buttonCot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finalText += "cot(";
            editText.setText(finalText);
        }
    });

当我想隐藏我的键盘时,我会在我的活动中使用它

@Override
    public void onBackPressed() {
        LinearLayout keyBoard = (LinearLayout) findViewById(R.id.keyBoard);

        if (keyBoard.getVisibility() == View.INVISIBLE) {
            Fragment fragment = null;
            Class fragmentClass = null;

            fragmentClass = GraphActivity.class;
            try {
                fragment = (Fragment) fragmentClass.newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }

            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();

            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
        } else {
            keyBoard.setVisibility(View.INVISIBLE);
        }
    }

其他clickListener里面的代码,这里是部分代码,我没有复制每一个clickListener。
我怎样才能使我的代码工作?我需要隐藏我的键盘,我想再次打开它,但它不起作用。我的错误在哪里?

标签: javaandroid

解决方案


推荐阅读