- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我做了一个 EditText
OnFocusChangeListener
据推测,当它不在焦点上时,它会隐藏光标和另一个 View (即单击屏幕上除 EditText
之外的任何位置将隐藏这些项目)。点击 EditText
是唯一会显示它们的时间。
这是我的 EditText
的 OnFocusChangeListener pageTitle
:
pageTitle.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(b) {
pageTitle.setCursorVisible(true);
saveCancelBar.setVisibility(View.VISIBLE);
} else {
pageTitle.setCursorVisible(false);
saveCancelBar.setVisibility(View.GONE);
}
}
});
我还制作了一个 OnclickListener
:
pageTitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pageTitle.setCursorVisible(true);
saveCancelBar.setVisibility(View.VISIBLE);
}
});
OnClickListener 有效,但 OnFocusListener 无效。理想情况下,pageTitle
的光标和 saveCancelBar
最初是隐藏的,只有在 pageTitle
时才会出现被点击。
这是我的 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:ignore="missingPrefix"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context="app.wanderast.activity.AddPhotoActivity">
<LinearLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="horizontal">
<TextView
android:id="@+id/back_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/arrow_left"
android:textSize="20sp"
android:clickable="true"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_below="@id/toolbar"
android:orientation="vertical">
<EditText
android:id="@+id/title"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="36dp"
android:background="@color/transparent"
android:maxLength="64"
android:privateImeOptions="nm"
android:inputType="textNoSuggestions|textMultiLine"
android:cursorVisible="false"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="16sp"
app:autoSizeMaxTextSize="24sp"
app:autoSizeStepGranularity="4sp"
android:textColor="@color/grey700"/>
<View
android:layout_width="100dp"
android:layout_height="2dp"
android:layout_marginTop="3dp"
android:background="@color/grey700"
/>
<LinearLayout
android:id="@+id/sort"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/header"
android:layout_marginTop="20dp"
android:clickable="true"
android:gravity="bottom"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/sort_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="3dp"
android:text="List View"
android:textColor="@color/grey700"
android:textSize="14sp"/>
<TextView
android:id="@+id/sort_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chevron_circle_down"
android:textColor="@color/grey700"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/linearLayout">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/add_photo_layout"
android:layout_marginTop="150dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_centerInParent="true">
<TextView
android:id="@+id/placeholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginEnd="40dp"
android:layout_marginBottom="30dp"
android:background="@null"
android:minLines="0"
android:text="Add your first travel moment to your story"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="20sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<LinearLayout
android:id="@+id/capture_photo_button"
android:layout_marginBottom="15dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center|center_vertical"
android:background="@drawable/green_pill_thick">
<TextView
android:id="@+id/capture_photo_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="@string/camera"
android:layout_gravity="center_horizontal|center_vertical"
android:textColor="@color/green500"
android:layout_marginEnd="5dp"/>
<TextView
android:id="@+id/capture_photo_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Capture Moment"
android:layout_gravity="center_horizontal|center_vertical"
android:textColor="@color/green500"
android:textAlignment="center"
android:textSize="14sp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/add_photo_button"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center|center_vertical"
android:background="@drawable/blue_pill_thick">
<TextView
android:id="@+id/add_photo_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="@string/photo"
android:layout_gravity="center_horizontal|center_vertical"
android:textColor="@color/blue500"
android:layout_marginEnd="5dp"/>
<TextView
android:id="@+id/add_photo_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add from Gallery"
android:layout_gravity="center_horizontal|center_vertical"
android:textColor="@color/blue500"
android:textAlignment="center"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/list_view_layout"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="150dp"
android:paddingBottom="50dp">
<ListView
android:id="@+id/list_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll">
</ListView>
</RelativeLayout>
</LinearLayout>
<!--Navbar-->
<LinearLayout
android:id="@+id/photo_story_navbar"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/navbar"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="right"
android:paddingStart="15dp"
android:orientation="horizontal"
android:layout_marginEnd="10dp">
<!-- Take Photo Button -->
<LinearLayout
android:id="@+id/nav_capture_button"
android:layout_width="84dp"
android:layout_height="32dp"
android:paddingStart="10dp"
android:orientation="horizontal"
android:background="@drawable/green_pill_button"
android:layout_gravity="center_vertical"
android:gravity="center|center_vertical"
android:paddingEnd="10dp"
android:clickable="true">
<TextView
android:id="@+id/nav_capture_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="@string/camera"
android:textColor="@color/green500"
android:layout_gravity="center_horizontal|center_vertical"
android:paddingEnd="5dp"/>
<TextView
android:id="@+id/nav_capture_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Capture"
android:layout_gravity="center_horizontal|center_vertical"
android:textColor="@color/green500"
android:textAlignment="center"
android:textSize="12sp"/>
</LinearLayout>
<!-- Add from Gallery Button -->
<LinearLayout
android:id="@+id/nav_gallery_button"
android:layout_width="84dp"
android:layout_height="32dp"
android:paddingStart="10dp"
android:layout_marginLeft="5dp"
android:orientation="horizontal"
android:background="@drawable/blue_pill"
android:layout_gravity="center_vertical"
android:gravity="center|center_vertical"
android:paddingEnd="10dp"
android:clickable="true">
<TextView
android:id="@+id/nav_gallery_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="@string/photo"
android:textColor="@color/blue500"
android:layout_gravity="center_horizontal|center_vertical"
android:paddingEnd="5dp"/>
<TextView
android:id="@+id/nav_gallery_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gallery"
android:layout_gravity="center_horizontal|center_vertical"
android:textColor="@color/blue500"
android:textAlignment="center"
android:textSize="12sp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="right"
android:paddingEnd="15dp"
android:orientation="horizontal">
<!-- Review button -->
<LinearLayout
android:id="@+id/nav_review_button"
android:layout_width="84dp"
android:layout_height="32dp"
android:paddingStart="10dp"
android:orientation="horizontal"
android:background="@drawable/red_500_pill"
android:layout_gravity="right"
android:gravity="center|center_vertical"
android:paddingEnd="10dp"
android:clickable="true">
<TextView
android:id="@+id/nav_review_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Review"
android:layout_gravity="center_horizontal|center_vertical"
android:textColor="@color/red500"
android:textAlignment="center"
android:textSize="12sp"/>
<TextView
android:id="@+id/nav_review_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="@string/angle_double_right"
android:textColor="@color/red500"
android:layout_gravity="center_horizontal|center_vertical"
android:paddingStart="5dp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/save_cancel_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/linearLayout"
android:layout_alignParentStart="true"
android:background="@drawable/black_border_top"
android:visibility="gone">
<RelativeLayout
android:id="@+id/save_title_btn"
android:clickable="true"
android:layout_width="84dp"
android:layout_height="32dp"
android:layout_alignParentRight="true"
android:background="@drawable/blue_pill"
android:layout_marginRight="15dp"
android:layout_marginTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="fill"
android:text="Save Title"
android:textSize="12sp"
android:textColor="#2196F3"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/cancel_title_btn"
android:layout_width="84dp"
android:layout_height="32dp"
android:clickable="true"
android:layout_alignParentRight="true"
android:background="@drawable/grey_700_pill"
android:layout_marginRight="105dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Cancel"
android:layout_gravity="fill"
android:textSize="12sp"
android:textColor="#616161" />
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
最佳答案
如果你检查 onFocusChange(View v, boolean hasFocus)
的定义您会注意到您的代码必须像这样更改:
pageTitle.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(!hasFocus) {
pageTitle.setCursorVisible(true);
saveCancelBar.setVisibility(View.VISIBLE);
} else {
pageTitle.setCursorVisible(false);
saveCancelBar.setVisibility(View.GONE);
}
}
});
这是在 Android 中检查软键盘可见性的代码
public class MainActivity extends AppCompatActivity
{
public static String TAG = MainActivity.class.getSimpleName();
private TextView saveCancelBar;
private EditText pageTitle;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setListenerToRootView();
saveCancelBar = (TextView) findViewById(R.id.cancel_bar);
pageTitle = (EditText) findViewById(R.id.title);
pageTitle.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
@Override
public void onFocusChange(View view, boolean hasFocus)
{
...
}
});
}
public void setListenerToRootView()
{
final View activityRootView = getWindow().getDecorView().findViewById(android.R.id.content);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
Rect r = new Rect();
activityRootView.getWindowVisibleDisplayFrame(r);
int screenHeight = activityRootView.getRootView().getHeight();
// r.bottom is the position above soft keypad or device button.
// if keypad is shown, the r.bottom is smaller than that before.
int keypadHeight = screenHeight - r.bottom;
Log.e(TAG, "keypadHeight = " + keypadHeight);
if (keypadHeight > screenHeight * 0.15) {
// 0.15 ratio is perhaps enough to determine keypad height.
Toast.makeText(getApplicationContext(), "Gotcha!!! softKeyboard open", Toast.LENGTH_SHORT).show();
} else {
// keyboard is closed
Toast.makeText(getApplicationContext(), "Gotcha!!! softKeyboard closed", Toast.LENGTH_SHORT).show();
saveCancelBar.setVisibility(View.GONE);
}
}
});
}
}
关于android - EditText OnFocusChangeListener() 不隐藏光标和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702866/
我只从事 Android 应用程序开发工作几天,所以请原谅我的无知。我正在尝试为 EditText 设置一个监听器,该监听器将在该字段失去焦点后触发。我在 java 中找到了一些示例,但找不到用于 m
我的 Activity 中有一个 EditText。 OnFocusChangeListener 仅在选择另一个 EditText(或输入)时调用。 我如何确定我的 EditText 之外的点击(就像
我正在开发示例应用程序来测试 OnFocusChangeListener,我将调试点放在它的方法上 public void onFocusChange(View v, boolean hasFocus
我在 ListFragment 中有一个 ListView,我想在用户更改列表中的焦点项时更改 fragment 的背景。我特意在这里说焦点,因为这是一个 Google TV 应用程序,所以我针对方向
我为 Android 计算器应用程序编写了一些代码。我想要的是:- 如果 EditText 字段失去焦点,所有输出字段都应该得到更新,就像在 Excel 工作表中发生的那样,如果我们更新单元格中的任何
我有一个标准的文本字段,我想知道用户何时在其中设置焦点。有没有办法做到这一点? 我尝试设置可点击修饰符以在有人单击它时触发事件,但看起来它不适用于 TextField: modifier = Modi
我目前正在尝试为我的应用程序提供一个直观的界面。 我有一个 oncreate 函数可以在加载时激活键盘,效果很好。 public void onCreate(Bundle savedInstanceS
myEdit1.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode,
我正尝试按如下方式自定义 View.onFocusChangeListener 类: private class myCostBoxFocusListener implements View.onFo
我做了一个 EditText OnFocusChangeListener据推测,当它不在焦点上时,它会隐藏光标和另一个 View (即单击屏幕上除 EditText 之外的任何位置将隐藏这些项目)。点
我在用户输入表单上有一个 EditText 行。单击 EditText 以启动 DatePickerDialog 使用 setOnTouchListener 效果很好。我设置的用于处理 EditTex
我在 Activity 中有一个 SearchView;当用户执行搜索时,一个包含搜索结果的 Fragment 被添加到同一个 Activity 中。 现在我想要的是当 SearchView 被点击时
我有这段代码,其中每次前一个 lineaLayout 的编辑文本失去焦点时,我都会膨胀一个包含 3 个 editText 的 linearLayout。我只想在最近创建的 editTexts 上使用
我需要为我的 EditText 实现一次性 OnFocusChangeListener。即,一旦 EditText 获得焦点,它就会执行某些操作并停止监听焦点更改事件。 我将一个任意的 OnFocus
我的 Activity 中有两个 EditText,每个都在 TextInputLayout 中: 此外,在
我正在使用一个包含 EditText 的库,我需要检测此 EditText 何时失去焦点。该库已在此 EditText 上添加了一个 OnFocusChangeListener,因此我无法覆盖此监听器
我想为我拥有的每个 EditText(在我的例子中是 VerifiedEditText)设置自动滚动。我是这样做的,但我认为这不是应该的方式(看起来太复杂、太乱、太长),你能推荐我让它更简单吗?我仍在
我有一个微调器,可以与标准 OnItemSelectedListener 一起正常工作以呈现一组选项: s.setAdapter(adapter); s.setOnItemSelectedListen
没有比标题更清楚的了。我有一个由文本输入布局包裹的 EditText。我试图在 EditText 失去焦点时触发一个事件。但是,一旦应用了事件监听器,TextInputLayout 就不再为文本设置动
我正在尝试在 EditText 上实现 OnFocusChangeListener。问题是我收到此错误 Class 'FacilityScreen' must either be declared a
我是一名优秀的程序员,十分优秀!