سؤال

لدي شريط عنوان مخصص

 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.

يتعطل تطبيقك لأنه في الكود الخاص بك ، يمكنك الاتصال بشريط العنوان من ميزات النافذة وفي الجانب الآخر ، تقوم بتعطيله من خلال البيان. في الأساس لا يمكنك القيام بذلك ، إنه غير صحيح منطقيا. تحتاج إلى تعديل شريط العنوان الخاص بك حتى لا لإزالته.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top