当前位置: 首页 > 知识库问答 >
问题:

如何在创建活动时使EditText不聚焦

伊光赫
2023-03-14

我已经阅读了讨论这个问题的其他问题,除了创建的第一个问题之外,它们都适用于我的布局。

目前,这是我的onCreate方法的顶部:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

^这使得它至少键盘不会在启动时弹出,但EditText仍然专注于。

这是我的EditTextXML

<EditText
    android:id="@+id/password"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/changePass"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="167dp"
    android:ems="10"
    android:imeOptions="flagNoExtractUi"
    android:inputType="textPassword"
    android:maxLength="30" >
</EditText>

这是我提起我的活动时的样子:

问题是,对于某些手机,当EditText像这样聚焦时,它们无法在其中写入。我希望它不对焦。

我所做的工作适用于接下来提出的布局,因为<code>编辑文本

请注意,它的布局是相同的。这是用户返回此屏幕后的屏幕,这表明<code>XML

我已经做了研究,所有其他问题都没有帮助我(谢天谢地,它们确实帮助键盘没有出现)。我如何使启动时的EditText看起来像第二个屏幕截图,而不是第一个?

共有3个答案

颛孙昆
2023-03-14

在main_layout中添加以下两行:

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

示例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"> *YOUR LAYOUT CODE* </RelativeLayout>
鲁斯伯
2023-03-14

XML代码:

<EditText
    android:id="@+id/password"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/changePass"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="167dp"
    android:ems="10"
    android:focusable="false"
    android:imeOptions="flagNoExtractUi"
    android:inputType="textPassword"
    android:maxLength="30" >
</EditText>

Java代码:

EditText edPwd = (EditText)findViewById(R.id.password);
edtPwd.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            v.setFocusable(true);
            v.setFocusableInTouchMode(true);
            return false;
        }
    });

在xml中将focusable设置为false,并通过代码将其设置为true

白才捷
2023-03-14

您可以设置布局的属性,如<code>android:descendantFocusability=“beforedensions”

示例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/mainLayout"
  android:descendantFocusability="beforeDescendants"
  android:focusableInTouchMode="true" >

    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/changePass"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="167dp"
        android:ems="10"
        android:imeOptions="flagNoExtractUi"
        android:inputType="textPassword"
        android:maxLength="30" >
    </EditText>

</RelativeLayout>

愿这一个有用;)

 类似资料:
  • 我是Android Studio的新手,我一直在寻找答案,但不幸的是,我无法做到。我在创建新时遇到问题 我的Android Studio和我之前观看的视频的对比: 我已经试过右键单击另一张照片上的确切内容,并在每个文件夹中的任何位置单击鼠标右键,但仍然找不到新的

  • 我在中使用,并且包含一些作为子视图。我所面临的是,当edittext聚焦和keybaoard出现时,我的完整视图不会向上滚动。 下面是作为该布局输出的代码和图像。

  • appI预览希望区分我通过单击按钮创建的edittext,并在特定的edittext上实现onclick侦听器 。

  • 但不幸的是,它无法工作。 这是我今天尝试的最后一次尝试,但没有奏效: 和样式:

  • 每当我创建新项目时,它总是用我的新项目创建appcompat_v7项目。当我创建新的android活动时,它总是扩展ActionBaractive并创建fragment_main.xml.我尝试更新adt和s\w也仍然没有运气 而这段代码也是在main活动中生成的

  • 1. 创建会议活动 访问【会议营销】,点击【+新建会议】进入新建市场活动-会议销售页面; 在新建会议页面填写会议活动名称、展示封面、开始时间、结束时间、地点等 根据会议需要在会议详情中添加会议简介、嘉宾介绍、日程安排、会议须知等,帮助参会人员更快的了解会议主题及注意事项; 保存完成新建会议后会进入会议概览页面; 2. 完成报名设置 在会议下访问【报名设置】,为当前会议设置好报名内容以及确认是否开启