0

新しいカスタム ボトム アクション バーを作成しようとしています。ビジュアルは問題ないように見えますが、(RelativeLayout から) 膨張した ImageView に onClick を追加すると、「メソッドが見つかりませんでした」というエラーがスローされます。以下の textOnClickTest メソッドでテストしています。

基本的に、アイコン間の間隔をカスタマイズしようとしています。ただし、onClickは機能していないようです。

ここに画像の説明を入力

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    new MenuInflater(this).inflate(R.menu.activity_menu, menu);
    RelativeLayout relativeLayout = (RelativeLayout) menu.findItem(R.id.search).getActionView();
    View view2 = getLayoutInflater().inflate(R.layout.bottom_actionbar, null);

    relativeLayout.addView(view2);

    return true;
}

テスト機能:

public void textOnClickTest (){
    System.out.println("prints stuff");
}

bottom_action.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/action_bottom"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

<ImageView 
    android:id="@+id/layers"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:onClick="textOnClickTest"
    android:src="@drawable/layers_icon"/>

</RelativeLayout>

action_menu.xml

   <?xml version="1.0" encoding="utf-8"?>
   <menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:title="Search"
    android:id="@+id/search"
    android:actionLayout="@layout/bottom_actionbar"
    android:icon="@drawable/layers_icon"
    android:numericShortcut="1"
    android:alphabeticShortcut="s"
    android:showAsAction="always" />

<item

    android:id="@+id/menuU"
    android:icon="@drawable/social_group"
    android:numericShortcut="2"
    android:alphabeticShortcut="u"
    android:showAsAction="always" />

</menu>

上部のアクションバー:

 mActionBar = getActionBar();
        mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);
        mActionBar.setDisplayShowHomeEnabled(false);
        mActionBar.setDisplayShowTitleEnabled(false);
        View view = View.inflate(getApplicationContext(), R.layout.just_text, null);
        mActionBar.setCustomView(view);

just_text.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/action"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center"
    android:clickable="true"
    android:onClick="testOnClickText"
    android:text="@string/app_name"
    android:textSize="30sp"/>

</RelativeLayout>
4

1 に答える 1

1

textOnClickTest ()メソッドは fype のパラメーターを受け入れる必要がありますView。このようなもの:

public void textOnClickTest (View view){
    //..
}

(補足として、その RelativeLayout をインフレートonCreateOptionsMenu()するのは適切な場所ではないようです。メニュー オプションがクリックされたときに何かを発生させたい場合は、オーバーライドする必要がありますonOptionsItemSelected()) 。

于 2013-06-28T17:58:29.397 に答える