java - EditText 按需小部件

标签 java android android-layout android-widget android-edittext

我想要一个 TextView 显示文本,当您单击/长按它时,应该“显示”一个文本框并允许编辑所述文本。当你完成编辑时(我想是按键输入)它应该恢复到带有更新文本的 TextView ......

我想知道实现这样一个小部件是否可行,或者我应该破解一个解决方法吗?非常欢迎提示和建议。

如果您需要进一步了解我的意思,请转到您的示例。 (windows) skype 配置文件并亲自查看。

编辑: 澄清:我特别要求一个小部件或类似的 TextView ,直到单击,然后转换为包含相同文本的编辑文本;完成编辑后,它会转换回代表新更改文本的 TextView 。这就是我所说的“按需编辑文本小部件”的意思。

但我希望得到比

更好的东西
public class Widget {
     TextView text;
     EditText edit;
     String   textToRepresent;
     //...
}

最佳答案

这里有几个不同的选项。

首先,您必须向要进行交互的 TextView 注册一个 onClick 或 onLongClick。 只需确保用户知道它是可点击的

然后让您的 onClick 函数启动一个 DialogFragment .我喜欢创建展示功能。请注意,您可以使用此处的支持库使您的应用向后兼容。

private void showDialog() {
    MyDialogFragment dialog = new MyDialogFragment();
    dialog.show(getSupportFragmentManager(), "dialog");
}

DialogFragment 非常简单。在您的 onCreateView 中,您将膨胀要显示给用户的 View 。您也可以用简单的 AlertDialogBuilder 包装它如果您不想定制。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle     savedInstanceState) {
    View view = inflater.inflate(R.layout.your_dialog_layout);

    mTitleEditText = (TextView) view.findViewById(R.id.title);
    mTitleEditText.setOnClickListener(this);

    return view;
}

在您的 findViewByIds 之后设置您的 onClickListeners。 您必须注意的最后一件事是将数据返回到原始 TextView 中。 您可以通过在 Activity 中创建一个可以从 DialogFragment 内部调用的公共(public)方法来做到这一点。像这样

 @Override
    public void onClick(View v) {
        int clickedId = v.getId();

        if (clickedId == mDoneButton.getId()) {
            MyActivity activity = (MyActivity)getActivity();

            mTitle = mTitleEditText.getText().toString();
            activity.setText(mTitle);
            dismiss();
        }
    }

我建议使用 DialogFragment,因为它可以很好地处理您的生命周期。 但是,另一种选择是创建一个以对话为主题的新 Activity

<activity android:theme="@android:style/Theme.Dialog" />

然后你可以startActivityForResult显示您的对话框,然后在 onActivityResult 中捕获您的结果

关于java - EditText 按需小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722340/

相关文章:

java - 如何访问 HashMap 内对象的值

java - 使用信号量保护数组

android - 如何在 Android Instrumentation 测试中强制改变方向?

Android:处理来自 HTTP Get-Request 的 Cookie

android - adjustResize 向上推 EditText 但不向上推 RecyclerView

java - 收到 org.hibernate.MappingException : Duplicate property mapping

java - 在 ODFToolkit 中将内容添加到 OpenOffice odp 演示文稿的框架

android - 如何使Android应用程序屏幕全屏显示?

Android:当按钮打开时如何将按钮对齐到键盘的底部和上方?

java - 从固定选项卡中删除滑动操作