1

デフォルトのタイトル バーをカスタマイズしたところ、2.x、3.x デバイスでは期待どおりに表示されますが、4.x デバイスでは表示されません。

デバイス 2.2:
ここに画像の説明を入力

デバイス 4.1.2:
ここに画像の説明を入力

onCreate 内のコードは次のとおりです。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView localTextView = (TextView) getWindow().findViewById(
                android.R.id.title);
        if (localTextView != null) {
            ViewParent localViewParent = localTextView.getParent();
            if ((localViewParent != null)
                    && ((localViewParent instanceof FrameLayout))) {
                View localView = ((LayoutInflater) getSystemService("layout_inflater"))
                        .inflate(R.layout.logout_button, null);
                UIImageButton localUIImageButton = (UIImageButton) localView
                        .findViewById(R.id.logoutButton);
                Rect localRect = new Rect();
                Window localWindow = getWindow();
                localWindow.getDecorView().getWindowVisibleDisplayFrame(
                        localRect);
                int i = localRect.top;
                int j = localWindow.findViewById(android.R.id.title).getTop() - i;
                PrintStream localPrintStream = System.out;
                Object[] arrayOfObject = new Object[1];
                arrayOfObject[0] = Integer.valueOf(j);
                localPrintStream.printf("%d", arrayOfObject);
                localUIImageButton.setMaxHeight(j);
                ((FrameLayout) localViewParent).addView(localView);
            }
        }
    }

これはマニフェスト コードです。

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

4.x デバイスのタイトル バーを 2.x と同様にしたい。

4

3 に答える 3

1

Android 4.0 以降では、アクション バーをカスタマイズする必要があります。参照: http://developer.android.com/guide/topics/ui/actionbar.html

これに沿った何か。

ActionBar actionBar = getSupportActionBar();

LayoutInflater inflator = (LayoutInflater).getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.logout_button, null); // your logout button
actionBar.setCustomView(v);
于 2013-03-21T21:29:48.183 に答える
1

何時間も費やした後、私は自分の問題を解決しました。このandroid:theme=@android:style/Theme.Lightテーマをアクティビティに追加することで問題が修正され、上記のデバイス 2.2 スクリーンショットと同じカスタマイズ タイトル バーがすべてのバージョンで適切に表示されるようになりました。

于 2013-03-22T20:16:21.663 に答える
0

これを修正する簡単な方法は、android:targetSdkVersion をハニカム以前のバージョンに戻すことです。次に、アプリは互換モードを使用してレンダリングされ、タイトル バーは古いデバイスと一致する必要があります。

于 2013-03-21T21:19:22.970 に答える