2011-02-09 4 views
0

У меня возникла странная проблема с кнопкой, которая отображается на экране, но я не могу щелкнуть. Дело не в том, что событие onClick не стреляет, кажется, что физически он не реагирует на клики, как если бы у него был прозрачный слой поверх него.Невозможно нажать кнопку

Основной Activity где он построен на:

public class MusicList extends Activity implements OnClickListener { 
... 
@Override 
    public void onCreate(Bundle bundle) 
    { 
     super.onCreate(bundle);  

     setContentView(R.layout.mymusic); 
     this.myTabHost = (TabHost)this.findViewById(R.id.th_set_menu_tabhost); 
     this.myTabHost.setup(); 

     TabSpec ts = myTabHost.newTabSpec("TAB_TAG_1"); 

     ts.setIndicator("Media Item",getResources().getDrawable(R.drawable.music));    

     ts.setContent(R.id.media_item_tab); 

     try { 
      relativeLayout = (RelativeLayout) myTabHost.findViewById(android.R.id.tabcontent).findViewById(R.id.media_item_tab); 
     } catch (NullPointerException e) { 
      Log.e(this.getClass().getSimpleName(),"Layout is not correct",e); 
     } 

      Button button = (Button)relativeLayout.findViewById(R.id.play_button); 
      // button.setClickable(true); 
      button.setOnClickListener(this); 
        myTabHost.addTab(ts); 
    } 
    @Override 
    public void onClick(View v) { 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(itemData.get("ITEM_URL")))); 
    } 
} 

макет, который показан совершенный на экране, как это:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/th_set_menu_tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 
    <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:paddingTop="65px"> 

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/media_item_tab" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
       <TextView 
       android:id="@+id/media_title" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textSize="30sp" 
       android:textColor="#40A5D9" 
       android:gravity="center" 
       android:layout_alignParentTop="true" 
       android:singleLine="true" 
       android:ellipsize="marquee" 
       android:text="Title" 
       > 
       </TextView> 
       <ImageView 
       android:id="@+id/media_cover" 
       android:layout_width="fill_parent" 
       android:layout_height="180px" 
       android:gravity="center" 
       android:layout_below="@+id/media_title" 
       android:src="@drawable/geniocover"    
       > 
       </ImageView> 
       <TextView 
       android:id="@+id/media_author" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textSize="20sp" 
       android:textColor="#86CCF3" 
       android:gravity="center" 
       android:singleLine="true" 
       android:ellipsize="marquee" 
       android:layout_below="@+id/media_cover" 
       android:text="Author" 
       > 
       </TextView> 
       <TextView 
       android:id="@+id/media_album" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:textColor="#DAFFFF" 
       android:gravity="center" 
       android:singleLine="true" 
       android:ellipsize="marquee" 
       android:layout_below="@+id/media_author"  
       android:text="Album (Year)" 
       > 
       </TextView> 
       <Button 
       android:id="@+id/play_button" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Play" 
       android:textColor="#003983" 
       android:textStyle="bold" 
       android:textSize="20sp" 
       android:gravity="center" 
       android:layout_below="@+id/media_album" 
       android:clickable="true"  
       > 
       </Button> 
      </RelativeLayout> 
      <ListView 
      android:id = "@+id/tablist" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      /> 
    </FrameLayout> 
</TabHost> 

Любые предложения?

Спасибо!

+0

Мне любопытно: почему вы используете RelativeLayout, когда все элементы находятся ниже предыдущего - возможно ли LinearLayout с ориентацией = вертикаль? –

+0

Ну, текущий макет - это просто макет, над которым мы работаем, поэтому он перенес несколько изменений из своего первого состояния (когда это действительно RelativeLayout). Я попытаюсь изменить это, чтобы исключить это как источник проблемы. –

+0

Вы говорите * Это не значит, что событие onClick не стреляет *, но я вижу в комментарии вы также говорите * он никогда не входит *. Я смущен. – Nanne

ответ

1

У вас есть FrameLayout с двумя детьми, если он предназначен только для размещения. Последнее добавлено ListView, в конечном итоге оно вернется и, вероятно, получит все ваши данные.

+0

Это сработало! Немного неудобно, что порядок в макете xml учтен, но он все равно решил мою проблему :) Спасибо! –

0

Я думаю, что проблема вызвана сложной структурой вашего tablayout.

Обычно я использую отдельное мероприятие, содержащее TabLayout, и просто помещаю различные действия как содержимое в tabhost (tabSpec.setContent(Intent intent)).

На самом деле это должно решить вашу проблему.

Кстати, не используйте RelativeLayout, где вы можете использовать LinearLayout.

+0

Оба метода для действительны для создания вкладок, поэтому я не думаю, что переход от одного и того же Activity для нескольких вкладок к одному действию за вкладку является правильным решением. Вероятно, это решило бы, но это можно сделать с помощью одной отдельной операции. –

Смежные вопросы