texto studio salto poner oscuro negro modo linea edittext descargar como color celular cambiar caja android android-layout android-5.0-lollipop material-design appcompat android-appcompat

studio - salto de linea edittext android



¿Cómo puedo modificar el color de ondulación cuando uso? Attr/selectableItemBackground como fondo? (7)

He visto algunas preguntas SO y me dieron algunos métodos posibles para lograr lo que quiero. Por ejemplo:

  1. Utilice el atributo colorControlHighlight en styles.xml.

    Aquí está mi styles-v21.xml:

    <style name="SelectableItemBackground"> <item name="android:colorControlHighlight">#5677FC</item> <item name="android:background">?attr/selectableItemBackground</item> </style>

    Y mi widget:

    <TextView android:id="@+id/tv_take_photo_as_bt" android:layout_width="280dp" android:layout_height="48dp" android:text="@string/act_take_photo" style="@style/SelectableItemBackground"/>

    Y no funciona. También intenté agregar parent="Theme.AppCompat al estilo parent="Theme.AppCompat ", o cambiar a colorControlHighlight(no android: prefix)" , o cambiar a ?android:attr/selectableItemBackground , ninguno de los dos es útil.

  2. Utilice el atributo backgroundTint en el diseño.

    Entonces agrego android:backgroundTint="#5677FC" a mi TextView . Aún inútil. Luego intenté cambiar android:backgroundTintMode a src_in y src_atop , y nunca hacen la diferencia.

Entonces, ¿cómo puedo cambiar el color de ondulación cuando uso ?attr/selectableItemBackground como fondo. Solo me enfoco en Lollipop y superiores. ¡Gracias de antemano!


Efecto dominó en dispositivos pre y Lollipop +

Harrane y Liuting tienen razón. La respuesta aceptada no es la mejor manera. Permítanme mostrar en el código cómo cambiar el color de ondulación para versiones anteriores a Lollipop y superiores

  1. Su AppTheme debe heredar de cualquier tema de AppCompat y contener el atributo colorControlHighlight (sin el prefijo ''android:'')

    <!-- Application theme. --> <style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="colorControlHighlight">#40ffffff</item> </style>

  2. Su vista debe contener clickable = "true" (o debe tener un detector de clics configurado mediante programación) y el fondo debe ser "? Attr / selectableItemBackgroundBorderless" o "? Attr / selectableItemBackground":

    <LinearLayout ... android:clickable="true" android:background="?attr/selectableItemBackgroundBorderless"/>

Nota: si su vista principal tiene fondo blanco, no verá el efecto dominó ya que es blanco. Cambiar el valor de colorControlHighlight para un color diferente

Además, si desea diferentes colores de ondulación en diferentes actividades, puede establecer un tema personal para cada actividad en el archivo de manifiesto, por ejemplo:

<activity android:name="com.myapp.GalleryActivity" android:theme="@style/RedRippleTheme" />

¿Diferentes colores ondulados para diferentes fragmentos en la misma actividad?

Puede cambiar los atributos del tema de actividad para cada fragmento en tiempo de ejecución. Simplemente sobrescríbalos antes de que el fragmento se infle con su estilo personalizado y aplique a un Tema actual:

en valores / styles.xml

<style name="colorControlHighlight_blue"> <item name="colorControlHighlight">@color/main_blue_alpha26</item> </style>

Luego, en su fragmento antes de la inflación en onCreateView() :

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getContext().getTheme().applyStyle(R.style.colorControlHighlight_blue, true); //blue ripple color View view = inflater.inflate(R.layout.my_fragment_layout, container, false); return view; }

Este estilo solo funcionará para este fragmento

¿Diferentes colores ondulados para diferentes vistas? (Lollipop +)

Puede cambiar el color de ondulación para cada vista por separado utilizando el atributo colorControlHighlight , no funciona si los aplica directamente a una vista:

<TextView ... colorControlHighlight="#40ffffff"/> <!-- DOESN''T WORK -->

deberías aplicarlo como tema:

<TextView ... android:theme="@style/colorControlHighlight_blue"/>

PD: a veces, este enfoque ayuda si tiene problemas desconocidos con la ondulación y no puede resolverlo. En mi caso, utilicé lib deslizante de terceros que estropeó los efectos de onda para todo el diseño y agregué explícitamente este tema a todas las vistas en las que se podía hacer clic.


En la aplicación de tema negro oscuro (o cualquier otra), intente usar como se muestra a continuación primero cree ripple_effect.xml en la carpeta ripple_effect.xml y agregue código como

<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#f5f5f5"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="#f5f5f5" /> </shape> </item> </ripple>

luego configure el fondo en su vista Cualquier, como Linear layout, Button, TextView etc.

<TextView android:id="@+id/tvApply" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/ripple_effect" android:clickable="true" android:text="APPLY" android:textColor="#FFFFFF" android:gravity="center" android:textSize="@dimen/_8sdp" android:padding="@dimen/_8sdp" android:focusable="true" />


Este código funciona para mí para crear una onda:

public static void setRippleDrawable(View view, int normalColor, int touchColor) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { RippleDrawable rippleDrawable = new RippleDrawable(ColorStateList.valueOf(touchColor), view.getBackground(), null); view.setBackground(rippleDrawable); } else { StateListDrawable stateListDrawable = new StateListDrawable(); stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(touchColor)); stateListDrawable.addState(new int[]{android.R.attr.state_focused}, new ColorDrawable(touchColor)); stateListDrawable.addState(new int[]{}, new ColorDrawable(normalColor)); view.setBackground(stateListDrawable); } } catch (Exception e) { Log.e(LOG_TAG, "" + e); } }

No encontré ninguna forma de modificar el atributo selectableItemBackground. Por eso lo hice como arriba.


Finalmente encuentro la solución: en lugar de usar android:colorControlHighlight directamente en el tema SelectableItemBackground , debería escribir otro estilo:

<style name="SelectableItemTheme"> <item name="colorControlHighlight">@color/ripple_color</item> </style>

Entonces:

<style name="SelectableItemBackground"> <item name="android:theme">@style/SelectableItemTheme</item> <item name="android:background">?attr/selectableItemBackground</item> </style>

Finalmente agregue style="@style/SelectableItemBackground" para View en layout.xml.

ACTUALIZADO EL 26/8/2016 Después del lanzamiento de N, descubrí que a veces no podemos usar este método para configurar el color CardView para algún tipo de View (por ejemplo, el CardView ). Ahora recomiendo a los desarrolladores que usen RippleDrawable , que también se puede declarar en xml. Aquí hay un ejemplo:

Quiero mostrar un efecto CardView cuando el usuario toca / hace clic en un CardView encima de API21, y, por supuesto, debería haber otro tipo de comentarios antes de Lollipop. Entonces debería escribir:

<android.support.v7.widget.CardView android:layout_width="wrap_content" android:layout_height="wrap_content" android:foreground="@drawable/selectable_item_background"/>

y selectable_item_background en la carpeta drawable :

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@android:color/transparent" /> <item android:drawable="@color/color_clicked" /> </selector>

drawable-v21 carpeta drawable-v21 :

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ripple_black" /> </selector>

finalmente, el ripple_black en la ripple_black (o drawable-v21 ):

<ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:color="@color/color_clicked" tools:ignore="NewApi" /> <!--you can remove this line if it''s in v21 folder-->

Eso es. Para otras vistas, tal vez debería usar android:background="@drawable/selectable_item_background" . No olvide establecer un OnClickListener , OnTouchListener o algo así para ellos, de lo contrario no se mostrará la ondulación.



Muestra un efecto dominó con color en API +21 y un fondo gris simple en la prensa para API -21. Agrega este estilo:

<style name="AppTheme.MyRipple"> <item name="colorControlHighlight">@color/your_color</item> <item name="android:background">?selectableItemBackgroundBorderless</item> </style>

Y configúralo a la vista:

<Button ... android:theme="@style/AppTheme.MyRipple" />


Use el atributo de primer plano como seleccionableItemBackground y el atributo de fondo como el color que desee.

android:foreground="?attr/selectableItemBackground" android:layout_height="wrap_content" android:layout_width="match_parent" android:background="@color/white"