Невозможно нажать кнопку - PullRequest
0 голосов
/ 09 февраля 2011

У меня странная проблема с кнопкой, которая отображается на экране, но которую я не могу нажать. Дело не в том, что событие 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>

Есть предложения?

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

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

0 голосов
/ 09 февраля 2011

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

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

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

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

...