java - 当用户退出微调器时调用哪个事件

标签 java android android-layout android-activity

我有一个微调器,我想在用户退出微调器而不做任何事情时显示/隐藏一些东西。例如,当用户触摸微调器之外的区域时。 附:容器布局的 onTouchEvent(在我的例子中是 LinearLayout)也没有被调用。 这是我对自定义 spineer 的实现:

public SpinnerHintAdapter(Activity context, int resourceId, int textViewId, List<SpinnerItem> list, Spinner parent){

    super(context,resourceId,textViewId, list);
    flater = context.getLayoutInflater();
    this.items = list;
    this.gender = parent;

}

 @Override
 public int getCount() {
     return items.size();
 }

 @Nullable
 @Override
 public SpinnerItem getItem(int position) {
     return items.get(position);
 }

 @Override
 public long getItemId(int position) {
     return position;
 }

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
     SpinnerItem spinnerItem = getItem(position);
     View rowView = flater.inflate(R.layout.gender_item ,null,true);
     TextView txtTitle = (TextView) rowView.findViewById(R.id.main_text);
     txtTitle.setText(spinnerItem.getName());
     txtTitle.setTextColor(txtTitle.getResources().getColor(R.color.color_white));
     Log.i(Tags.byEmail, "VVVVVVVVVVVVv");;
     gender.setVisibility(View.VISIBLE);
     return rowView;
}


 @Override
 public View getDropDownView(int position, View convertView, ViewGroup parent) {
     firstTime = false;
     SpinnerItem rowItem = getItem(position);
     View rowView = flater.inflate(R.layout.gender_drop_down_item ,null,true);
     TextView txtTitle = (TextView) rowView.findViewById(R.id.drop_down_text);
     txtTitle.setText(rowItem.getName());
     if(!isEnabled(position)){
         txtTitle.setBackground(txtTitle.getResources().getDrawable(R.drawable.normal_rounded_text_field));
         txtTitle.setTextColor(Color.parseColor("#777777"));
     }
     parent.setBackground(parent.getResources().getDrawable(R.drawable.normal_rounded_text_field));
     txtTitle.setEnabled(isEnabled(position));
     gender.setVisibility(View.INVISIBLE);
     Log.i(Tags.byEmail, "DDDDDDDDDDDDDDDDDD");
     return rowView;
 }

 @Override
 public boolean isEnabled(int position) {
     if(position == 0)
         return false;
     return super.isEnabled(position);
 }

当用户在没有选择项目的情况下退出时,不会调用 getView 函数,因此性别(微调器对象本身)将不可见。 我试过 OnItemSelected 和 OnNothingSelected 也没有被调用。 事件 OnTouch 事件不会被调用。

用户退出时不会调用以下事件: 1- OnItemSelected 2- OnNothingSelected 3- OnFocusChanged。 4- 触摸

最佳答案

我认为这个事件对你来说就像魔法一样有效,不是吗?

public class CustomSpinner extends Spinner {

    ... Constructors ...

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        Log.d(CustomSpinner.class.getSimpleName(), "onWindowFocusChanged: " + hasWindowFocus);
        if (hasWindowFocus) {
            // User click out of window
        } else {
            // User click in spinner window
        }
    }
}

关于java - 当用户退出微调器时调用哪个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41615987/

相关文章:

Android ViewBinding 错误 : Cannot access class 'android.widget.no_name_in_PSI_3d19d79d_1ba9_4cd0_b7f5_b46aa3cd5d40'

java - Android 对话框不显示

Android:TextInputLayout 相互堆叠

android - 图书馆 koush/ion 未显示进度对话

java - 如何使用spring将数据从Controller传递到J2ee中查看

java - 计算 Parse.com 数据 - Java

java - DataOutputStream 卡住

android - 使用MediaRecorder android时如何在前后摄像头之间切换

android - 在 Flutter 中使用 Webview

java - Android:停止/启动在 onCreate() 中创建的服务