Extraño divisor con la barra de acción de soporte de v7
El tema utilizado para la barra de acción es Theme.AppCompat.Light
cuando se utiliza Theme.Holo
el problema no existe.
Estoy usando una vista personalizada para la barra de acción de soporte v7:
- Eliminar sombras debajo de la barra de herramientas appcompat
- Home Icon Up Indicator Barra de Acción de Compat
- Cómo cambiar el estilo y el color de la pestaña mediante la biblioteca AppCompat
- Cómo habilitar homeAsUp o llamar a setDisplayHomeAsUpEnabled () en la barra de herramientas independiente con appcompat v21
- Cambiar barra de acciones para superponer desde dentro de Fragmento
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" > </LinearLayout>
Y obtengo el siguiente resultado:
¿Cómo puedo eliminar la línea / divisor negro entre el diseño y la barra de acción.
He intentado cambiar el estilo del actionbar pero con no mucho de un éxito.
<resources> <style name="Theme.Styled" parent="@style/Theme.AppCompat.Light"> <!-- Setting values in the android namespace affects API levels 14+ --> <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> </style> <style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <item name="dividerVertical">@null</item> <item name="android:background">@null</item> <item name="android:paddingTop">0dp</item> <item name="android:paddingBottom">0dp</item> <item name="android:showDividers">none</item> <item name="android:background">@null</item> <item name="android:divider">@null</item> <item name="android:dividerHeight">0dp</item> <item name="android:dividerPadding">0dp</item> </style> </resources>
Aquí está mi actividad Fuente:
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setCustomView(R.layout.actionbar); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); } }
Este es el manifiesto:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.actionbartest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.Styled" > <activity android:name="com.example.actionbartest.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
- Cómo cambiar el color de acción de ActionBar con AppCompat
- Actionbar Compat cambiar título textColor
- Android cómo obtener AppCompat.Translucent tipo de tema con barra de acción de apoyo?
- Personalización del color de la flecha 'atrás' en Actionmode con appcompat-v7
- Icono de navegación de la barra de herramientas nunca configurado
- ActionBarCompat en Gingerbread llena toda la pantalla
- Cómo cambiar el indicador HomeAsUp en la nueva barra de herramientas de AppCompat?
- ActionBar Compat ActionBarActivity setTitle no funciona en Android 2.X
Probablemente esté buscando el atributo android:windowContentOverlay
.
Para eliminar esa sombra, simplemente establece el valor en @null
en tu tema, así:
<style name="Theme.Styled" parent="@style/Theme.AppCompat.Light"> <!-- Setting values in the android namespace affects API levels 14+ --> <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> <item name="android:windowContentOverlay">@null</item> </style>
¿Cómo puedo eliminar la línea / divisor negro entre el diseño y la barra de acción.
Creo que estás equivocado. Realmente no hay un divisor presente. Para confirmar:
Abra el archivo de diseño que está utilizando con setContentView(R.layout.activity_main)
. Cualquiera que sea el contenedor base, establezca su fondo en el color que utilice con ActionBar. Por ejemplo, digamos que el contenedor base es un LinearLayout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" > <<<====== Add this <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </LinearLayout>
Verá que el ActionBar ahora se mezcla con la vista de la actividad.
Lo que está viendo actualmente es un gradiente definido como:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#ffe8e8e8" android:endColor="#ffffffff" android:angle="270" /> </shape>
Aquí es donde el fondo viene de:
(taken from platforms/android-17/data/res/values/themes.xml) <style name="Theme.Light"> <item name="windowBackground">@android:drawable/screen_background_selector_light</item> ....
Para deshacerse de él, puede darle a su contenedor de base un color de fondo o reemplazar el valor de este atributo en res/values/themes.xml
su proyecto:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light"> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowBackground">@android:color/white</item> </style>
Editar:
Esta es la configuración del proyecto:
Res / layout / activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" tools:context=".MainActivityCompat" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
Res / values / styles.xml
<resources> <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light"> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> </style> </resources>
AndroidManifest.xml:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.trialcompat.MainActivityCompat" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
MainActivityCompat.java:
import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; public class MainActivityCompat extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setCustomView(R.layout.actionbar); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); } }
R.layout.actionbar
es la misma que la que has publicado en la pregunta. Y este es el resultado:
Como puede ver, no puedo reproducir el problema del divisor. ¿Me estoy perdiendo de algo?
Junto a @Vikram respuesta, agrega esto al tema:
<item name="android:windowContentOverlay">@android:color/white</item>
Recomendación: Usa el mismo color que usas en tus diseños. Para el predeterminado, use @null
Espero que esto ayude.
Tuve el mismo problema. Después de un montón de ensayos y fallos encontré que el error se debía al fondo 9patch de la barra de acción. Cambié el 9patch con una imagen regular y la línea negra se había ido.
- Android – sharedferences devuelve valor nulo
- Android cómo dibujar triángulo, estrella, cuadrado, corazón en el lienzo