Crea tu propia barra de acción en android
Tengo algunos problemas con la barra de acción en android. Quiero tener algunos iconos en el lado izquierdo y en el lado derecho. En el lado izquierdo quiero tener 2 iconos y texto y en el lado derecho me gustaría tener 6 iconos, pero cuando el texto es muy largo quiero ocultar algunos iconos en el lado derecho. En la barra de acción estándar sólo puedo añadir elementos de derecha a izquierda, así que decido crear una barra de acción propia. ¿Cómo puedo empezar? Lo que necesito saber para hacer eso. ¿Me puede dar algunos consejos o ejemplos?
- Agregue el margen programáticamente a RelativeLayout. ¿Qué estoy haciendo mal?
- Restringir la vista del niño dentro de los límites de los padres
- Cómo obtiene "android:" valores de etiqueta en una vista personalizada
- Cómo ocultar la barra inferior del sistema en la tableta android
- ¿Por qué mi hilandero es tan horrible?
- Asignar un ID de vista programáticamente en Android
- Archivo de diseño XML anidado
- ¿Hay algún evento disparado cuando Android View se vuelve visible en la aplicación?
- ¿Por qué no usar siempre android: configChanges = "keyboardHidden | orientation"?
- Android: Ajustar los tamaños de forma programática según el tamaño de la pantalla
- Utilice otro conjunto de recursos en Android (no tiempo de ejecución, pero compiletime)
- Long Android TextView empuja otras vistas fuera de la pantalla
- Cómo Inflar Extended LinearLayout de XML
Es muy sencillo. Cree una nueva clase que se extenderá desde algún diseño. Inflate xml que tendrá iconos y botones. Y hacer que los métodos para la lógica show \ hide \ set oyentes y así sucesivamente. Lo hice temprano, pero ahora puedo decir que no es tan buena idea. Hay directrices y muy importante para crear aplicaciones como debe ser.
Ejemplo de mi antiguo proyecto:
public class ActionBar extends RelativeLayout { private ToggleButton buttonSave; private ToggleButton buttonClear; private ToggleButton buttonHelp; private ToggleButton buttonBack; private FrameLayout sepparator; private TextView textview; private ImageView imageViewIcon; public ActionBar(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); layoutInflater.inflate(R.layout.actionbar, this); initView(); } private void initView () { buttonSave = (ToggleButton) findViewById(R.id.actionbar_togglebutton_save); buttonBack = (ToggleButton) findViewById(R.id.actionbar_togglebutton_back); buttonHelp = (ToggleButton) findViewById(R.id.actionbar_togglebutton_help); textview = (TextView) findViewById(R.id.actionbar_textview); imageViewIcon = (ImageView) findViewById(R.id.actionbar_imageview_icon); buttonClear = (ToggleButton) findViewById(R.id.actionbar_togglebutton_clear); sepparator = (FrameLayout) findViewById(R.id.actionbar_sepparator); } public void setOnSaveButtonClickListener (OnClickListener listener) { buttonSave.setOnClickListener(listener); } public void setSaveButtonDrawable (Drawable d) { buttonSave.setBackgroundDrawable(d); buttonSave.setVisibility(View.VISIBLE); } public void setOnHelpButtonClickListener (OnClickListener listener) { buttonHelp.setOnClickListener(listener); } public void setHelpButtonDrawable (Drawable d) { buttonHelp.setBackgroundDrawable(d); buttonHelp.setVisibility(View.VISIBLE); } public void setOnBackButtonClickListener (OnClickListener listener) { buttonBack.setOnClickListener(listener); } public void setBackButtonDrawable (Drawable d) { buttonBack.setBackgroundDrawable(d); buttonBack.setVisibility(View.VISIBLE); } public void setClearButtonDrawable (Drawable d) { buttonClear.setBackgroundDrawable(d); buttonClear.setVisibility(View.VISIBLE); } public void setOnClearButtonClickListener (OnClickListener listener) { buttonClear.setOnClickListener(listener); } public void setTitle (String value) { textview.setText(value); } public void setIcon (int resId) { imageViewIcon.setImageDrawable(getResources().getDrawable(resId)); } public void setOnIconClickListener (OnClickListener listener) { imageViewIcon.setOnClickListener(listener); } public void setSaveButtonChecked (boolean value) { buttonSave.setChecked(value); } public void setSeporatorVisible (int visibility) { sepparator.setVisibility(visibility); } public void setOnIconListener (OnClickListener listener) { imageViewIcon.setOnClickListener(listener); } }
XML:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="60dp" android:background="@drawable/avtion_bar_bg" > <ToggleButton android:id="@+id/actionbar_togglebutton_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:visibility="gone" android:background="@drawable/arrow_back_button_drawable" android:textOn="" android:textOff="" /> <ImageView android:id="@+id/actionbar_imageview_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_toRightOf="@id/actionbar_togglebutton_back" android:layout_marginLeft="19.1dp"/> <TextView android:id="@+id/actionbar_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:textColor="@color/actionbar_text" android:textSize="16dp" android:layout_toRightOf="@id/actionbar_imageview_icon" android:layout_marginLeft="56.1dp" /> <RelativeLayout android:id="@+id/actionbar_relativelayout_saveconteiner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true"> <ToggleButton android:id="@+id/actionbar_togglebutton_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@drawable/save_btn_drawable" android:textOn="" android:textOff=""/> <FrameLayout android:id="@+id/actionbar_sepparator" android:layout_width="0.5dp" android:background="@color/white25transpert" android:layout_toLeftOf="@id/actionbar_togglebutton_save" android:layout_height="35dp" android:layout_centerInParent="true"> </FrameLayout> <ToggleButton android:id="@+id/actionbar_togglebutton_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:layout_toLeftOf="@id/actionbar_sepparator" android:layout_marginRight="4dp" android:layout_centerVertical="true" android:background="@drawable/clear_button_drawable" android:textOn="" android:textOff=""/> </RelativeLayout> <ToggleButton android:id="@+id/actionbar_togglebutton_help" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@drawable/save_btn_drawable" android:layout_marginRight="10dp" android:textOn="" android:textOff=""/> </RelativeLayout>
¡Buena suerte!
- Gráficos de Android PIE en una actividad
- Android no puede obtener el objeto de mensaje en AlertDialog