2011-12-13 140 views
0

我寫了一個代碼,以擴大選定的圖像在我的畫廊,我不知道爲什麼每次我滾動,畫廊失去焦點,這裏是我的代碼。畫廊失去焦點

gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     public void onItemSelected(AdapterView<?> parent, View v, 
       int position, long id) { 

      if (lasview != null) 
       lasview 
         .setLayoutParams(new Gallery.LayoutParams(130, 195)); 
      lasview = v; 
      v.setLayoutParams(new Gallery.LayoutParams(170, 230)); 

     } 

     public void onNothingSelected(AdapterView<?> parent) { 
      // System.out.println("NOTHING SELECTED"); 

     } 
    }); 

回答

0

我自己解決了這個問題。

 <Gallery 
     android:id="@+id/gallery1" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="50" 
     android:nextFocusDown="@+id/gallery1" 
     android:nextFocusLeft="@+id/gallery1" 
     android:nextFocusRight="@+id/gallery1" 
     android:nextFocusUp="@+id/gallery1" 
     android:focusable="false" 
     android:clickable="false" 
     android:focusableInTouchMode="false" 
     android:descendantFocusability="afterDescendants"/> 

在活動

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { 

     gl.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null); 

     return true; 
    } 
    if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { 

     gl.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null); 

     return true; 
    } 
      return false; 

}

這對我的作品。

1

嘗試lasview.getLayoutParams(),並且所檢索的LayoutParams設置的值來代替。
調用setLayoutParams()會導致重繪/刷新,這可能會導致您的問題。

+0

getView本身導致失去焦點的方法,因爲它包含setLayoutParams,請問有沒有解決方法?因爲這對我很重要? – Vervatovskis

+0

我猜你也可以在完成更改後將'requestFocus()'添加到您想要關注的圖庫/視圖以強制焦點。 – Jave