将焦点设置在 LinearLayout 上

Setting focus on LinearLayout

我试图在从另一个 activity 返回到 activity 时将焦点设置在 LinearLayout 视图上。场景:

我有一个 activity 有一堆 LinearLayout 项目(里面有东西),其中一些是文本,其他是照片。假设前 20 个是 TextView,其余是照片。当我离开这个 activity(拍照)时,activity 会转到 TextView 所在的列表的顶部 - 无论我做什么。

如何将焦点强制返回到触发新 activity 之前我所在的项目?

我已经试过了,但没有成功:

[How Linear Layout get Focus?

我目前正在尝试通过记住之前的视图来强制聚焦,但没有成功(尽管我可以看到正在执行的代码)。在我的主要 activity:

 @Override
 public void onResume() {
  super.onResume();

     // See if we had a field with focus previously...
     if (mPreviousView != null) {
      if (mPreviousView.isFocusable()) {
       mPreviousView.requestFocus();
      }
      
     }

 }
...

 @Override
 protected void onPause() {
        super.onPause();

  mPreviousView = this.getCurrentFocus();
 
 }

我在 LinearLayout 中动态设置焦点:

 private void initialize() {
  LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  inflater.inflate(R.layout.field_photo_picker, this);
  
  // To allow focus to be returned to control after taking photo
  this.setFocusableInTouchMode(true);
  this.setFocusable(true);
  this.setClickable(true);
  

最后是 LinearLayout 的 XML:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout 
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="5dp"
    android:paddingBottom="5dp">
    
    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="normal"
        android:text="" />
    
    <LinearLayout 
     android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
     
            <TextView
          android:id="@+id/photoValue"
          android:layout_width="wrap_content"
          android:layout_height="match_parent"
          android:textSize="17sp"
          android:textStyle="normal"
          android:gravity="right|center_vertical"
          android:layout_weight="1"
          android:layout_marginRight="5dp"
          android:text="" />
    
        <ImageButton 
          android:id="@+id/photoPicker"
          android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/form_photo"
    android:padding ="5dp"
    android:gravity="center_vertical"
    android:focusableInTouchMode="false"
    android:background="?android:attr/selectableItemBackground"
    android:layout_weight="0"
      />
     
     </LinearLayout>
    
    <View
        android:layout_marginTop="8dp"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/grey" />
    
</LinearLayout>
</merge>

你的 textview 和其他观点 focusable,你 this.setFocusable(true); 没有意义