2011-02-09 9 views
0

画面に表示されているが、クリックできないボタンには奇妙な問題があります。 onClickイベントが発生しているわけではありません。物理的にクリック数に反応しないようです。あたかもその上に透明なレイヤーがあるかのようです。上のそれが構築されているボタンをクリックすることができません

メインActivity

<?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> 

任意の提案:

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")))); 
    } 
} 

画面に完璧に示されているレイアウトは、このようなものですか?

ありがとうございます!

+0

私は好奇心:すべての要素が以前の下にあるとき、なぜあなたはRelativeLayoutを使うのですか - の向き=縦とのLinearLayoutが同様に行うことができますか? –

+0

さて、現在のレイアウトは私たちが取り組んでいるモックアップなので、最初の状態(実際にはRelativeLayoutだったとき)からいくつかの変更がありました。これを問題の原因として排除するために、私はこれを変更しようとします。 –

+0

あなたは言う*それはonClickイベントが発射していないわけではない*、私はあなたが言う*あなたはまたそれを入力しないと言うコメントを参照してください*。よくわかりません。 – Nanne

答えて

1

FrameLayoutには2人の子供がいて、1人だけホストする予定です。 ListViewが最後に追加され、上に上がり、おそらくすべての入力を受け取っています。

+0

それは働いた!レイアウトxmlの順序が考慮されているのは少し面倒ですが、とにかく問題を解決しました:)ありがとう! –

0

私は問題があなたのtablayoutの複雑な構造に起因していると思います。

通常、TabLayoutを保持する別のアクティビティを使用し、コンテンツとしてさまざまなアクティビティをタブホストに入れます(tabSpec.setContent(Intent intent))。

実はこれはあなたの問題を解決する必要があります。

ちなみに、RelativeLayoutを使用してLinearLayoutを使用することは避けてください。

+0

どちらの方法もタブ構築に有効ですので、複数のタブの同じアクティビティからタブごとの1つのアクティビティに移動するのは適切な解決策ではないと思います。それはおそらくそれを解決するでしょうが、1つのアクティビティでこれを行うことは可能です。 –