我对自定义标题和actionbar
溢出感到困惑。
直到现在我有一个Fragmentactivity
,它使用一个带有大图像的自定义标题栏和标题栏上的另外两个按钮。我现在需要使用ActionBarActivity
来显示带有2个选项菜单的操作溢出。 Actionbaractivity
是Fragmentactivity
的子类,但在我使用actionbaractivity
后,onCreate()
中的初始化出现了问题:
(equestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
...错误requestFeature()必须在添加内容之前调用。
我搜索了StackOverlow
,但找不到确切的答案。我认为这应该是一个非常简单的解决方案,但我无法得到它。
public class BluetoothChat extends ActionBarActivity implements TimePickerFragment.OnTimeDialogListener
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.CustomTheme);
super.onCreate(savedInstanceState);
if (D) Log.e(TAG, "+++ ON CREATE +++");
// using custom title to create custom title bar with bdx logo
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.windows_title);
自定义标题栏主题和布局
<ImageView
android:id="@+id/header"
android:src="@drawable/bdx_icon_284"
android:layout_width="130dp"
android:layout_height="50dp"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"
/>
<Button
android:id="@+id/btnDebug"
android:background="@drawable/ic_launcher"
android:layout_width="50dp"
android:layout_height="50dp"/>
<Button
android:id="@+id/btnBT"
android:background="@drawable/ic_bluetooth_256"
android:layout_width="50dp"
android:layout_height="50dp"/>
</LinearLayout>
式:
<resources>
<style name="CustomWindowTitleBackground">
<item name="android:background">@color/title_color</item>
</style>
<style name="CustomTheme" parent="android:Theme">
<item name="android:windowTitleSize">50dip</item>
<item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
</style>
</resources>
菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/btnConnect"
android:icon="@drawable/ic_bluetooth_32"
android:title="@string/secure_connect"
android:showAsAction="always" />
<item android:id="@+id/btnModifyName"
android:icon="@drawable/ic_launcher"
android:title="@string/modify_name"
android:showAsAction="ifroom" />
</menu>
Theme.AppCompat主题
<style name="mActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:windowTitleSize">50dip</item>
<item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
</style>
<style name="CustomTheme" parent="@style/Theme.AppCompat">
<item name="android:actionBarStyle">@style/mActionBar</item>
<item name="actionBarStyle">@style/mActionBar</item>
</style>
答案 0 :(得分:0)
添加:
final ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.windows_title);
而不是:
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.windows_title);