Android: شريط العنوان المخصص
سؤال
لدي شريط عنوان مخصص
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.activities);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
الذي يعمل بشكل جيد بشكل أساسي. المشكلة هي أنه حتى يتم عرض الكود أعلاه ، يتم عرض شريط العنوان الافتراضي. لا أريد شريط عنوان هناك على الإطلاق ، وبعبارة أخرى قبل أن يظهر لي لن يظهر.
إضافة هذا إلى البيان:
<application android:theme="@android:style/Theme.NoTitleBar">
يؤدي إلى إغلاق قوة. يبدو أن بياني مثل هذا
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@style/My_Theme">
حيث أحتاج إلى my_theme لأنه يحدد لون الخلفية ، فإن ضبط لون الخلفية في موضوع العميل يؤدي إلى منطقة رمادية حول خلفية ملونة. لذلك حتى بدون إغلاق القوة ، لست متأكدًا مما إذا كان العنوان NO سيساعد.
اي فكرة؟
المحلول
كان لدي نفس المشكلة مثلك.
المشكلة مع شيء لديك في أسلوبك.
جرب هذا:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="My_Theme">
<item name="android:windowTitleSize">35dp</item>
<item name="android:windowTitleBackgroundStyle">@android:color/black</item>
</style>
</resources>
نصائح أخرى
هذا هو الوحيد بالنسبة لي ، والذي يمنع العنوان الافتراضي قبل بدء العنوان المخصص:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="CustomWindowTitleStyle">
<item name="android:textColor">@android:color/transparent</item>
</style>
<style name="CustomTheme" parent="@android:style/Theme.Holo">
<item name="android:windowActionBar">false</item>
<item name="android:windowTitleBackgroundStyle">@android:color/transparent</item>
<item name="android:windowTitleSize">50dp</item>
<item name="android:windowTitleStyle">@style/CustomWindowTitleStyle</item>
</style>
</resources>
يجب عليك أيضًا التحقق مما إذا كان المخصص مدعومًا به أم لا.
Boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
if (customTitleSupported) {
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title);
}
أول شيء لماذا تستخدم شريط عنوان مخصص إذا كان تطبيقك لديه NotitleBar؟ هذا سخيف!
وغني عن القول ، هذه هي مشكلتك ويجب عليك إزالة هذا العلم.
على أي حال ، فإن أفضل طريقة لإضافة شريط عنوان مخصص في XML فقط. هذا يتجنب تطبيقك المزدوج تحميل شريط العنوان ؛ أي المستخدمين سيرون.
../res/styles.xml
<resources>
<style name="AppTheme parent="@style/android:Theme.Light">
<item name="android:windowNoTitle">false</item>
<item name="android:windowTitleSize">30dp</item
<item name="android:windowTitleStyle">@layout/custom_title</item>
</style>
</resources>
ثم لا تحتاج إلى هذا الرمز حول requestanything.
يتعطل تطبيقك لأنه في الكود الخاص بك ، يمكنك الاتصال بشريط العنوان من ميزات النافذة وفي الجانب الآخر ، تقوم بتعطيله من خلال البيان. في الأساس لا يمكنك القيام بذلك ، إنه غير صحيح منطقيا. تحتاج إلى تعديل شريط العنوان الخاص بك حتى لا لإزالته.