Cómo formatear una actividad de otra actividad mediante opciones de menú

Hola soy nuevo para Android y quiero cambiar el tamaño de la vista de texto y la vista de texto Color de una actividad de las opciones de menú No sé cómo hacerlo

He creado un elemento de menú como este

<item android:id="@+id/menu_item_share" android:title="Share" android:showAsAction="ifRoom|withText" android:orderInCategory="100" app:actionProviderClass="android.support.v7.widget.ShareActionProvider" /> <item android:id="@+id/display" android:orderInCategory="100" android:showAsAction="ifRoom|withText" android:title="Display Option" android:actionLayout="@layout/custom_setting" /> 

Cuando hago clic en la opción de visualización de la opción de menú de presentación actual un nuevo diseño desea ser llamado .. en ese diseño he creado dos botones uno es el botón más y otro es botón menos y quiero que estos botones para hacer cambios en el diseño anterior .

Cuando hago clic en el botón más, el texto de vista de texto desea ser Cambiar y cuando hago clic en el botón Menos, se reduce el tamaño de la vista de texto.

El código de diseño personalizado cuando se hizo clic en el elemento de menú

 <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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.aeiltech.sidd.CustomSetting" android:background="@mipmap/bg"> <ImageButton android:layout_width="50dp" android:layout_height="40dp" android:background="@drawable/close" android:layout_above="@+id/textView" android:layout_toRightOf="@+id/minus" android:layout_toEndOf="@+id/minus" android:id="@+id/close" /> <ImageButton android:layout_width="50dp" android:layout_height="40dp" android:background="@drawable/plusign" android:layout_marginTop="110dp" android:id="@+id/plus" android:layout_alignParentTop="true" android:layout_alignLeft="@+id/textView" android:layout_alignStart="@+id/textView" /> <ImageButton android:layout_width="50dp" android:layout_height="40dp" android:background="@drawable/minusign" android:id="@+id/minus" android:layout_alignTop="@+id/plus" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Change Text Size" android:id="@+id/textView" android:layout_above="@+id/minus" android:layout_centerHorizontal="true" android:textColor="#FFFFFF" /> </RelativeLayout> 

DetalleActividad (esta actividad tiene una vista de texto)

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.detail_activity); detailtext= (TextView) findViewById(R.id.detail); dbHelper = new SqlLiteDbHelper(this); try { dbHelper.openDataBase(); } catch (SQLException e) { e.printStackTrace(); } sqLiteDatabase = dbHelper.getReadableDatabase(); cursor=dbHelper.getdetails(sqLiteDatabase, selectedData); if(cursor.moveToFirst()) { detailtext.setText(cursor.getString(0)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_detail, menu); MenuItem shareItem = menu.findItem(R.id.menu_item_share); mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (id==R.id.display_option) { LayoutInflater layoutInflater= (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE); layoutInflater.inflate(R.layout.custom_setting,null); } return super.onOptionsItemSelected(item); } 

Para ayudar a aclarar, esta pregunta es la misma aplicación y autor que este App Crash al intentar cambiar textsize en textView haciendo clic en el botón

5 Solutions collect form web for “Cómo formatear una actividad de otra actividad mediante opciones de menú”

Muestra el nuevo diseño en forma de DialogFragment. La idea es mostrar la opción de aumento / disminución en la forma de una ventana emergente DialogFragment. Puede aumentar / disminuir el tamaño de la ventana emergente. Una vez que la ventana deshace el tamaño seleccionado se establece en TextView en su actividad.

MainActivity.java

 public class MainActivity extends AppCompatActivity { public static int updatedSize; TextView greetingText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); greetingText = (TextView)findViewById(R.id.hello_world_text); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { mycustomLayout(); return true; } return super.onOptionsItemSelected(item); } public void mycustomLayout(){ FragmentManager manager = getFragmentManager(); PopUp popUp = new PopUp(new FragmentDismissHandler()); popUp.show(manager,"POPUP"); } public void refreshText(){ if( updatedSize>0) greetingText.setTextSize(updatedSize); } private class FragmentDismissHandler extends Handler { @Override public void handleMessage(Message msg) { super.handleMessage(msg); refreshText(); } } 

}

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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/hello_world_text" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

PopUp.java (diseño personalizado como DialogFragment)

 public class PopUp extends DialogFragment implements View.OnClickListener{ Button increase,decrease,set; TextView sizeOfText; static int size; Handler handler; public PopUp(Handler handler) { this.handler = handler; } public PopUp(){ } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment getDialog().setTitle("change text size"); View view = inflater.inflate(R.layout.my_custom_layout, container, false); increase = (Button)view.findViewById(R.id.inc); increase.setOnClickListener(this); decrease = (Button)view.findViewById(R.id.dec); decrease.setOnClickListener(this); sizeOfText = (TextView)view.findViewById(R.id.size_text); sizeOfText.setText("text"); set = (Button)view.findViewById(R.id.ok); set.setOnClickListener(this); size = (int) sizeOfText.getTextSize(); return view; } @Override public void onClick(View view) { int id= view.getId(); if(id==R.id.inc){ size = size +1; sizeOfText.setText("text"); sizeOfText.setTextSize(size); } if(id== R.id.dec){ size = size - 1; sizeOfText.setText("text"); sizeOfText.setTextSize(size); } if(id== R.id.ok){ dismiss(); } } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); MainActivity.updatedSize = size; handler.sendEmptyMessage(0); } 

}

My_custom_layout.xml

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white"> <Button android:id="@+id/inc" android:text="increase" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/dec" android:text="decrease" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/size_text" android:padding="20dp" android:textColor="@android:color/black" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/ok" android:text="set" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

A veces rastreo el flujo de la actividad de un usuario para obtener una imagen completa de lo que están tratando de lograr y, a menudo, las elecciones de diseño que hacen se basan en las respuestas que reciben aquí, por lo que la pregunta de nido se basa en la solución proporcionada en La pregunta anterior. A veces esto es bueno, otras veces la persona no consigue una buena comprensión de las opciones de diseño disponibles para ellos.

Así que para responder a la pregunta:
Hay muchas maneras de hacer esto (mi lista no es exhaustiva), estoy sugiriendo unos pocos y demostrar uno.

Usted podría usar:

  1. Fragmentos
  2. Preferencias compartidas
  3. Intentos
  4. Tener las opciones de redimensionamiento dentro del menú

He elegido para demostrar los fragmentos, ya que es útil para muchas otras cosas y habilidad útil para tener.

Cree un fragmento con sus botones más y menos, en lugar de una actividad independiente. De esta manera el fragmento tiene acceso directo a los métodos de la actividad adjunta.

Utilice sus opciones de menú para llamar al método showButtonOptions () de su actividad.

Dentro de su actividad:

 Fragment fragment; FrameLayout frameLayout; @Override protected void onCreate(Bundle savedInstanceState) { ..../ View view = this.findViewById(android.R.id.My_Activity); frameLayout = (FrameLayout) findViewById(R.id.fragFrame); ..../ } public void ChangeMyLayoutMethod(args){ ..../ //use args to make change. } public void showButtonOptions() { // Create new fragment and transaction fragment = new MyPlusAndMinusButtonFragment(); fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.id.fragFrame, fragment); fragmentTransaction.commit(); frameLayout.setVisibility(View.VISIBLE); } public void returnToActivity() { frameLayout.setVisibility(View.GONE); // To do manage your back stack. } 

Dentro de su Actividad xml

 <RelativeLayout ... or whatever ...> .../ Details of that activity <FrameLayout android:id="@+id/fragFrame" android:layout_below="@+id/wherever" android:layout_height="your choice" android:layout_width="your choice" android:layout_marginTop=".. etc" android:visibility="gone"> </RelativeLayout> 

Crear un fragmento:

 public class MyPlusAndMinusButtonFragment extends Fragment { FragmentManager fragmentManager; ..../ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.My_Plus_And_Minus_Button_Fragment, container, false); fragmentManager = getFragmentManager(); ...../ return view; } //To Do // Manage button clicks// onClick(){ // Call the parent's activity's // Cast this activity to type of parent activity. ((MyActivity) getActivity()).ChangeMyLayoutMethod(args); } 

Fragmento de diseño, My_Plus_And_Minus_Button_Fragment.xml:

 <FrameLayout .....> <RelativeLayout ....> <ImageButtons etc... ..../ </RelativeLayout> </FrameLayout> 

Como con la mayoría de las decisiones de diseño de programación, puede haber muchas soluciones correctas, algunas son mejores que otras, algunas son sólo una cuestión de elección de diseño preferido. Hasta que tengamos las opciones, no tenemos otra opción.

Tratar

 @Override public boolean onOptionsItemSelected(MenuItem item) { if (id==R.id.display_option) { setContentView(R.layout.YOUR_LAYOUT) } return super.onOptionsItemSelected(item); } 
  @Override public boolean onOptionsItemSelected(MenuItem item) { if (id==R.id.display_option) { myCustomLayout(); } return super.onOptionsItemSelected(item); } public void myCustomLayout(){ LinearLayout ll = new LinearLayout(getActivity()); ll.setOrientation(LinearLayout.VERTICAL); View customView = LayoutInflater.from(getActivity()).inflate(R.layout.my_custom_layout,null,false); ll.addView(customView); parentView.addView(ll); // parentView is a layout in your activity xml; } 

Pruebe esto. Con toda suerte funciona.

 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); MenuInflater inflater=getMenuInflater(); inflater.inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } 

// OnOptionItemSelected

  @Override public boolean OnOptionItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.menu_item_share: Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_LONG).show(); return true; default: return super.onOptionsItemSelected(item); } } 
  • Establecer eventos onclick en la vista de texto creada mediante programación
  • Sombra larga de Android TextView
  • TextView ClickableSpan estilo para estado pulsado
  • Debe utilizar "sp" en lugar de "dp" para los tamaños de texto
  • ¿Es mejor usar múltiples SpanObjects o múltiples TextViews en Android?
  • Problema de superposición de texto en ViewFlipper ..
  • Agregar una fuente personalizada para la aplicación completa de Android
  • TextView - cómo hacer la segunda línea sangría
  • Actualizar un TextView después de hacer clic en el botón?
  • ¿Cómo puedo añadir un TextView a un LinearLayout dinámicamente en Android?
  • Cómo implementar una animación creciente de 0 a 600 en 5 segundos en TextVIew en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.