PDA

Ver la Versión Completa : [ SOLUCIONADO ] Setear un layout del main_activity a un fragmento


gonza28
05/03/16, 10:06:34
Si. Puede ser confuso. Pasa que estoy usando tabLayout. estoy usando fragment adapter para las pestañas debido a que se me dificulta trabajar en la actividad principal.
Estoy trabajando con esto practicamente http://blog.grafixartist.com/parallax-scrolling-tabs-design-support-library/
pero no puedo poner el TabLayout transparente porque en mi casi, como estoy trabajando con un fragmentAdapter estoy insertando el TabLayout del sistema en el AppBarLayout ya que no puedo usar un TabLayout físico en xml por que el AppBarLayout está en el main_activity.xml y para usar un TabLayout personalizado, es decir usar un TabLayout físico, debo meterlo en el AppBarLayout. pero en ese casi se me cierra la app porque no tengo acceso a ese TabLayout desde un Fragment.class. se entiende?

Mi diseño va todo bien, salvo que el TabLayout es de color y me arruina el diseño. yo pretendo dejarlo como se ve en el tutorial.

Si seteo un BackgroundColor de la siquiente manera:
tabs.setBackgroundColor(Color.parseColor("#00000000")); no funciona. a palos si me cambia, se pone blanco el fondo y no transparente ya que el TabLayout está insertado de manera rara. mas abajo el ejemplo de como lo tengo.

public class ViewPagerTwo extends Fragment {
private AppBarLayout appBar;
private TabLayout tabs;
private ViewPager viewPager;

public ViewPagerTwo() {
}

override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmento_viewpager, container, false);


if (savedInstanceState == null) {
insertarTabs(container);

viewPager = (ViewPager) view.findViewById(R.id.pager);
poblarViewPager(viewPager);
tabs.setupWithViewPager(viewPager);
}

return view;
}

private void insertarTabs(ViewGroup container) {
View padre = (View) container.getParent();
appBar = (AppBarLayout) padre.findViewById(R.id.appbar);
tabs = new TabLayout(getActivity());
tabs.setSelectedTabIndicatorColor(Color.parseColor ("#FFFFFF"));
tabs.setTabTextColors(Color.parseColor("#FFFFFF"), Color.parseColor("#ffc003"));
appBar.addView(tabs);
}

private void poblarViewPager(ViewPager viewPager) {
AdaptadorSecciones adapter = new AdaptadorSecciones(getFragmentManager());
adapter.addFragment(new UnoFragment(), getString(R.string.tab1));
adapter.addFragment(new DosFragment(), getString(R.string.tab2));
adapter.addFragment(new TresFragment(), getString(R.string.tab3));
adapter.addFragment(new CuatroFragment(), getString(R.string.tab4));
viewPager.setAdapter(adapter);
}
............

Me gustaria meter manualmente y físicamente un TabLayout en el AppBarLayout.
Pero no puedo porque este está en el main.
Alguien podria ayudarme? Me gusta mucho estos efectos pero no llevo mucho con ello y me cuestan algunas cosas.

Muchas gracias desde ya. Un saludo!

kriogeN
05/03/16, 10:47:49
He leído varias veces y no termino de enterarme, pero a ver si esto te vale.

Para acceder a una View del Activity desde el Fragment puedes hacerlo con:

getActivity().findViewById(R.id.....)

La llamada funcionará siempre y cuando lo hagas en el onActivityCreated() o algún evento posterior.

gonza28
05/03/16, 11:28:45
He leído varias veces y no termino de enterarme, pero a ver si esto te vale.

Para acceder a una View del Activity desde el Fragment puedes hacerlo con:

getActivity().findViewById(R.id.....)

La llamada funcionará siempre y cuando lo hagas en el onActivityCreated() o algún evento posterior.

Era de lo más facil. pero claro, yo no lo sabia ya que hasta ahora solamente declaraba los viewPager en la actividad. Tampoco se si esto me traerá problemas, supongo y creeria que no. M diste la clave. Era facil dije, pero tambien digo que no lo sabia hacer. Como estoy guiandome en tutoriales para esto, no presté mucha atencion aquí:

private void insertarTabs(ViewGroup container) {
View padre = (View) container.getParent();
appBar = (AppBarLayout) padre.findViewById(R.id.appbar);
tabs = new TabLayout(getActivity());
tabs.setSelectedTabIndicatorColor(Color.parseColor ("#FFFFFF"));
tabs.setTabTextColors(Color.parseColor("#FFFFFF"), Color.parseColor("#ffc003"));
appBar.addView(tabs);
}

Con tu ayuda lo puse así y problema resuelto. Tanto codigo por aqui y por allá que no me di cuenta.
Muchas gracias por la ayuda. marco como resuelto.

tabs = new TabLayout(getActivity());

x

tabs = (TabLayout) padre.findViewById(R.id.tabs);

main.xml o content main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:gonza="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:id="@+id/coordinatorLayout">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.design.widget.CollapsingToolbarLay out
android:id="@+id/htab_collapse_toolbar"
android:layout_width="match_parent"
android:layout_height="240dp"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:src="@mipmap/cofee_one"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="104dp"
android:minHeight="?attr/actionBarSize"
app:layout_collapseMode="pin"
android:gravity="top"
app:titleMarginTop="13dp"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
app:tabIndicatorColor="@color/zalmon" />
</android.support.design.widget.CollapsingToolbarLay out>

</android.support.design.widget.AppBarLayout>

<RelativeLayout
android:id="@+id/contenedor_principal"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">



</RelativeLayout>

<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Muchas gracias.:aplausos: