2012-12-25 11 views
6

Wesołych Świąt i Wesołych Świąt wszystkim!dodawanie odbiorcy kliknięć do zdjęcia tytułowego

Próbuję ustawić detektor na ikonie obrazu, która pojawia się po lewej stronie domyślnego paska tytułu, ale jak dotąd nie ma szczęścia.

Oto Moja aktywność w onCreate:

@Override public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    super.onCreate(savedInstanceState); 
    findViewById(Window.FEATURE_LEFT_ICON).setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      System.out.println("It works!"); 
     } 
    }); 
} 

Wszelkie sugestie? Mam nadzieję, że nie widzę odpowiedzi "nie jest to możliwe" :)

+2

Dlaczego nie używasz ActionBar? –

+0

Czy mówisz o tym [tym tytule] (http://sree.cc/wp-content/uploads/2011/02/image1.jpg)? Jeśli tak, powinieneś zajrzeć do implementacji ActionBar, pasek tytułu jest teraz dość przestarzały jako idiom interfejsu użytkownika. – dmon

+0

Tak, myślę, że użyłbyś ActionBar i zaimplementowałeś metodę onOptionsItemSelected() w swoim działaniu. Wierzę, że id ikony aplikacji na pasku akcji to 'android.R.id.home' – Karakuri

Odpowiedz

4

Wygląda na to, że dla lewej ikony nie ma id, jednak dla klasycznego paska tytułu dostępny jest identyfikator: android.R.id.title Tutaj jest przykładowa aktywność przy użyciu tego identyfikatora. Model requestWindowFeature(Window.FEATURE_LEFT_ICON); powinien wymusić klasyczny pasek tytułu, niezależnie od motywu.

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.activity_main); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.ic_launcher); 
    View v = findViewById (android.R.id.title); 
    v.setClickable(true); 
    v.setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      Toast.makeText(MainActivity.this, "Works!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
} 

Zasadniczo, co czyni to jest znajdzie identyfikator paska tytułowego (android.R.id.title), a następnie przydziela onClickListener do niego.

To będzies, tylko klasyczne paski tytułu okna.

+0

Czy próbowałeś uruchomić to przez telefon? Dostaję zerowy wskaźnik z moim Galaxy S3. –

+0

Tak, w wersji 4.0.4. Musisz mieć klasyczny motyw, taki jak Theme.Black/Theme.Light. Nowe motywy Holo używają ActionBar, który podobnie jak inne osoby używa innej implementacji. –

Powiązane problemy