5

この面白いタイトルバーの色を試してみたかったのですが、私にはうまくいきません。

getWindow().findViewById(android.R.id.title);

nullを返します。そこで、Hierarchy Viewerでそれを調べたところ、id/action_bar代わりにビューが呼び出されていることがわかりました。しかし、ありR.id.action_barません(オートコンプリートはそれを提供せず、このようなものはありませんR.java)。

だから今私は二重に混乱しています:

  • ある種はandroid.R.id.title時代遅れになっていますか(エミュレータでバージョン16を使用しています)?
  • どこid/action_barから来たの?
  • 互換性に関する推奨される簡単な方法は何ですか?

ActionBarSherlockを取得する必要がありますか?私はもともとタイトルバーの色を変更したかっただけです...それをあまりいじらないでください。

4

2 に答える 2

1

APIレベル14/Android 4.0より前のAndroidバージョンとの互換性を探している場合は、ActionBarSherlockを使用することをお勧めします。

ActionBarの背景の変更は簡単で、スタイルを介して最も簡単に行うことができます。http://android-developers.blogspot.com/2011/04/customizing-action-bar.htmlの「背景」セクションを参照してください

コードで変更することもできます。これをあなたの中に入れてくださいonCreate()

GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] {Color.RED, Color.GREEN});
getActionBar().setBackgroundDrawable(gradientDrawable);

これが実際のこのコードのスクリーンショットです:

ここに画像の説明を入力してください

于 2012-10-24T03:30:39.660 に答える
1

以下のコードを使用して、ActionBarのIDを取得します。

val actionBarId = resources.getIdentifier("action_bar", "id", packageName)

次に、アクションバーの子からタイトルを見つけます(通常の場合)。

val actionbar = findViewById<ViewGroup>(actionBarId)
for (view in actionbar.children) {
    if (view is TextView) {
        // this is the titleView
    }
}
于 2021-11-18T11:30:36.593 に答える