0

プロジェクトのボタンに動的な動作を提供できる必要があります。これまでのところ、私が得た最も近いものは、次のようなXMLを使用することです。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" android:drawable="@drawable/mainmenu_button_pressed" /> 
<item android:state_enabled="false" android:drawable="@drawable/mainmenu_button_disabled" />  
<item android:drawable="@drawable/mainmenu_button" /> 

</selector>

これはまさにトリックですが、質問のトピックで述べたように、私のプロジェクトではこれを動的にする必要があるので、私が何を意味するのかを説明します...

このアプリケーションにはイントロメニューがあり、いくつかのオプションには異なる画像があります。実行時(このメニューの前)にユーザーが行った選択に応じて、ボタンに異なる画像のセットを提供できるようにする必要があります。これを行う理想的な方法は次のとおりです。

<item android:state_pressed="true" android:drawable="%MAINMENU_BUTTON_PRESSED%" />

したがって、%MAINMENU_BUTTON_PRESSEDを設定するだけで、追加のコーディングを必要とせずに、セットA(A_mainpressed.png)またはB(B_mainpressed.png)を使用できます。

これを行うためのおそらく適切な方法は、OnClick関数を使用し、すべてをプログラムで実行することであることを私は知っています。ただし、私のプロジェクトに含まれる手作業の量を考慮して、動的XMLを作成してボタンに提供する方法が実際にはないことを最初に確認したかったので、そのように機能します(AFAIKのすべてのリソースがコンパイルされ、したがって、実行時に変更することはできません。また、アセットフォルダーのXMLファイルはコンパイルされていないため、機能しません。したがって、提供できるIDは生成されません)。

この動作を実現する方法はありますか、それとも飲み込んでOnClickメソッドを使用する必要がありますか?ありがとう

4

2 に答える 2

0

私は同じ問題を抱えており、描画可能な状態ごとにレベルリストを定義することで解決しました。たとえば、mainmenu_button_pressed.xmlの描画可能は次のようになります。

<level-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/A_mainpressed.png"
        android:maxLevel="0"
        android:minLevel="0" />
<item
        android:drawable="@drawable/B_mainpressed.png"
        android:maxLevel="1"
        android:minLevel="1" />
<item
        android:drawable="@drawable/C_mainpressed.png"
        android:maxLevel="2"
        android:minLevel="2" />
</level-list>

このように状態描画可能なファイルを3つ作成します。コード内で、構成に応じてメソッドsetImageLevelを呼び出すだけです。これは、(ユーザー/ルート)画像ボタンの表示には問題なく機能しました。

于 2012-10-05T14:35:54.020 に答える
0

気にしないで、別の投稿で答えを見つけました...**キーワードは「セレクター」でした。私はAndroidの経験がほとんどないので、これを探す方法を正確に知りませんでした(友人が実際にセレクターについてほのめかしたので、それを見つけました)。とにかくみんな助けてくれてありがとう。

于 2012-10-22T13:01:58.617 に答える