如何在方向更改后停止searchView自动获得焦点

时间:2018-04-06 09:42:02

标签: android searchview android-orientation

我已将searchItem膨胀为工具栏中的menuItem,我的问题是方向改变时,如果我的searchView处于展开模式,那么即使在方向聚焦于另一个视图之前,它也会自动获得焦点。

如何防止searchView自动获得焦点?

在改变方向之前:

enter image description here

改变方向后

Before orientation change

2 个答案:

答案 0 :(得分:2)

在recyclerView上方创建一个虚拟视图,然后在自动旋转后,该视图将首先进行焦点,因此搜索视图不会成为焦点,请尝试这样

答案 1 :(得分:1)

Android会尝试在视图层次结构中找到第一个可聚焦的视图并专注于它。为避免这种情况,您可以添加虚拟视图(例如,使用0高度和宽度的LinearLayout)来窃取第一个焦点。

  override func viewDidLoad() {
     super.viewDidLoad()

  let linkAttributes = [
        NSLinkAttributeName: NSURL(string: "http://stalwartitsolution.co.in/luminutri_flow/terms-condition")!
        ] as [String : Any]
  let attributedString = NSMutableAttributedString(string: "Please tick box to confirm you agree to our Terms & Conditions, Privacy Policy, Disclaimer. ")

  attributedString.setAttributes(linkAttributes, range: NSMakeRange(44, 18))

  attributedString.addAttribute(NSUnderlineStyleAttributeName, value: NSNumber(value: 1), range: NSMakeRange(44, 18))

  textview.delegate = self
  textview.attributedText = attributedString
  textview.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.red]
  textview.textColor = UIColor.white
  }


  func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
    return true
   }