2011-12-05 102 views
0

我有一個scroolView包含一個帶按鈕的表,我試圖請求焦點到其中一個按鈕,但沒有成功 這裏是代碼(一些行被刪除,以避免浮動)請求重點不適用於ScrollView Android

private void reDraw() 
{ 
    ll = new LinearLayout(this); 
    ll.setOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    ll.setGravity(Gravity.FILL); 
    ll.setBackgroundResource(R.drawable.modern_background); 
    ll.setPadding(20, 20, 20, 20); 


    sv = new ScrollView(this); 
    sv.setPadding(0, 20, 0, 0); 

    tl = new TableLayout(this); 
    tl.setGravity(Gravity.FILL); 
    tl.setStretchAllColumns(true); 

    get_start_and_end_of_month(Start.globalDate); 

    day = 1; 
    int dayInWeek = startOfTheMonth.get(java.util.Calendar.DAY_OF_WEEK); 
    String temp; 

    tr = new TableRow(this); 
    tr.setGravity(Gravity.FILL_HORIZONTAL); 
    for(int k = 0; k < 7; k++) 
    { 
     b = new Button(this); 
     b.setGravity(Gravity.CENTER); 
     b.setBackgroundResource(R.drawable.widget_cell_day); 
     b.setText(Start.hebLayout ? daysHebrew[k] : daysEnglish[k]); 
     tr.addView(b); 
    } 
    tl.addView(tr); 

    for(int i = 0; i < 5; i++) 
    { 
     tr = new TableRow(this); 
     tr.setGravity(i == 0 ? Gravity.RIGHT : Gravity.LEFT); 

     for(int j = 1; j < 8; j++) 
     {        
      if(!(i == 0 && j < dayInWeek)) 
      {    
       db = new DateButton(this, startOfTheMonth.getTime()); 
       db.setGravity(Gravity.CENTER); 

       if(new HdateNew(Start.globalDate).get_hd_day() == day) 
        db.setFocusableInTouchMode(true); 
       db.setId(day); 

       tr.addView(db); 

       if(day == new HdateNew(endOfTheMonth.getTime()).get_hd_day()) 
        break; 

       day++; 
       startOfTheMonth.add(java.util.Calendar.DATE, 1); 
      } 
     } 

     tl.addView(tr); 
    } 

    sv.addView(tl); 
    ll.addView(sv); 

    setContentView(ll); 

    db = (DateButton)findViewById(new HdateNew(Start.globalDate).get_hd_day()); 
    db.setFocusable(true); 
    db.requestFocus(); 
} 

現在你可以看到我沒設置按鈕要成爲焦點,但它不是爲我工作

回答

0

//嘗試設置內容視圖@最後

db = (DateButton)findViewById(new HdateNew(Start.globalDate).get_hd_day()); 
    db.setFocusable(true); 
    db.requestFocus(); 

setContentView(ll); 
相關問題