EditText像Snapchat一样表现为TextView

时间:2017-05-29 14:01:10

标签: java android

我想添加像Snapchat"添加标题"等功能。在我最近的项目中。

预期输出:当我点击添加文字按钮时,会出现一个带有EditText的标题栏,并且打开的键盘用户可以输入文字。如果我点击布局键盘,它会自动关闭,看起来像TextView和标题栏可以在y轴的屏幕上移动。

尝试失败:当我点击添加文字按钮时,会出现一个带有EditText的标题栏,标题栏无法在y轴上移动屏幕(如果我采取的话) TextView它可以正常运行,但不适用于EditText)。因为我无法点击布局。

我也尝试过像clickable false这样的属性。但它不起作用enter image description here

我的问题:如何在只有触摸事件的情况下将EditText显示为TextView,而点击它可以作为EditText使用吗?

添加edittext文本值后,我无法点击并触摸布局。

这是我的代码:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rel_Main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black"
    android:clickable="true">

    <FrameLayout
        android:id="@+id/frame_cameraHolder"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/iv_cameraMain"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </FrameLayout>

    <RelativeLayout
        android:id="@+id/rel_cameraTitleHolder1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="10dp">

        <ImageButton
            android:id="@+id/ib_cameraClose"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_close_white" />

        <ImageButton
            android:id="@+id/ib_cameraForward"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="24dp"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_forward" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rel_cameraTitleHolder2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_margin="5dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="15dp"
        android:visibility="gone">

        <ImageButton
            android:id="@+id/ib_cameraCancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_close_white" />

        <ImageButton
            android:id="@+id/ib_cameraBack"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_back" />

        <ImageButton
            android:id="@+id/ib_cameraStickers"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="24dp"
            android:layout_toLeftOf="@+id/ib_cameraDraw"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_sticker" />

        <ImageButton
            android:id="@+id/ib_cameraDraw"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="24dp"
            android:layout_toLeftOf="@+id/ib_cameraText"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_draw" />

        <ImageButton
            android:id="@+id/ib_cameraText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="24dp"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_text" />

    </RelativeLayout>

    <!--<uz.shift.colorpicker.LineColorPicker
        android:id="@+id/color_picker"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        app:orientation="horizontal"
        android:visibility="gone"/>-->

    <RelativeLayout
        android:id="@+id/rel_cameraTextHolder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="10dp"
        android:visibility="gone">

        <ImageButton
            android:id="@+id/ib_cameraTextStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_fontstyle" />

        <TextView
            android:id="@+id/ib_cameraDone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="24dp"
            android:text="Done"
            android:textColor="@color/white"
            android:textSize="20dp"
            android:textStyle="bold" />

    </RelativeLayout>

    <!--diff-->

    <RelativeLayout
        android:id="@+id/rel_cameraHolder1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:visibility="visible">

        <ImageButton
            android:id="@+id/ib_cameraflash"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="50dp"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_flash" />

        <Button
            android:id="@+id/btn_cameraCapturePic"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_centerHorizontal="true"
            android:background="@drawable/btn_capture" />

        <ImageButton
            android:id="@+id/ib_cameraReverse"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="50dp"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_reverse" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rel_cameraHolder2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:visibility="gone">

        <FrameLayout
            android:id="@+id/frame_cameraTimer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="24dp">

            <ImageButton
                android:id="@+id/ib_cameraTimer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="24dp"
                android:background="@android:color/transparent"
                android:src="@drawable/ic_blanck_timer" />

            <TextView
                android:id="@+id/text_cameraTimerText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="34dp"
                android:layout_marginTop="6dp"
                android:text="1"
                android:textColor="@color/white"
                android:textSize="8dp"
                android:textStyle="bold" />

        </FrameLayout>

        <ImageButton
            android:id="@+id/ib_cameraSave"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="24dp"
            android:layout_toRightOf="@+id/frame_cameraTimer"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_save" />

        <ImageButton
            android:id="@+id/ib_cameraYourStory"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="24dp"
            android:layout_toRightOf="@+id/ib_cameraSave"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_add" />

        <ImageButton
            android:id="@+id/ib_cameraSaveForward"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="24dp"
            android:background="@drawable/btn_capture"
            android:src="@drawable/ic_forward" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rel_cameraDeleteHolder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:visibility="gone">

        <ImageButton
            android:id="@+id/ib_cameraDelete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_delete" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rel_EdtAddedText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_centerInParent="true"
        android:orientation="horizontal"/>

</RelativeLayout>

MainActivity.java

private void setAddedEditTextDynamically() {
        mRelativeLayoutHolder2.setVisibility(View.GONE);

        //create dynamic edit text
        RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        final EditText edtAddedText = new EditText(MainActivity.this);
        lparams.addRule(RelativeLayout.CENTER_IN_PARENT);
        edtAddedText.setLayoutParams(lparams);
        edtAddedText.setTextColor(getResources().getColor(R.color.white));
        edtAddedText.setGravity(Gravity.CENTER_HORIZONTAL);

        // add edittext to rel layout
        mRelEdtAddedText.addView(edtAddedText);
        mRelEdtAddedText.setBackgroundColor(getResources().getColor(R.color.colorPrimary));

        mRelEdtAddedText.setOnTouchListener(new View.OnTouchListener() {
            PointF DownPT = new PointF(); // Record Mouse Position When Pressed Down
            PointF StartPT = new PointF(); // Record Start Position of 'img'

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int eid = event.getAction();
                switch (eid) {
                    case MotionEvent.ACTION_MOVE:
                        PointF mv = new PointF(event.getX() - DownPT.x, event.getY() - DownPT.y);
                        //   mLinMain.setX((int)(StartPT.x+mv.x));
                        mRelEdtAddedText.setX(10);
                        mRelEdtAddedText.setY((int) (StartPT.y + mv.y));
                        StartPT = new PointF(mRelEdtAddedText.getX(), mRelEdtAddedText.getY());
                        break;
                    case MotionEvent.ACTION_DOWN:
                        DownPT.x = event.getX();
                        DownPT.y = event.getY();
                        StartPT = new PointF(mRelEdtAddedText.getX(), mRelEdtAddedText.getY());
                        break;
                    case MotionEvent.ACTION_UP:
                        break;
                    default:
                        break;
                }
                return true;
            }
        });

    }

0 个答案:

没有答案