Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

405
Views
Mover vistas hacia arriba cuando aparezca SnackBar en CoordinatorLayout

Tengo un TextView en la parte inferior de CoordinatorLayout .

Pero cuando muestro un SnackBar , cubrirá el TextView .

Sé que tengo que personalizar un Behavior para TextView y anular layoutDependsOn y onDependentViewChanged , pero no se soluciona muy bien.

¿Me podrías dar algún consejo si lo sabes? Gracias.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si TextView es un hijo directo de un CoordinadorLayout, simplemente agregue

app:layout_dodgeInsetEdges="bottom"

en los atributos de TextView.

¡Magia!

over 4 years ago · Santiago Trujillo Report

0

Debe agregar un comportamiento a su LinearLayout e incrustarlo en un CoordinatorLayout .

Así es como lo haces.

MoveUpwardBehavior.clase

 import android.os.Build; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.view.View; public class MoveUpwardBehavior extends CoordinatorLayout.Behavior<View> { private static final boolean SNACKBAR_BEHAVIOR_ENABLED; @Override public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) { return SNACKBAR_BEHAVIOR_ENABLED && dependency instanceof Snackbar.SnackbarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) { float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); child.setTranslationY(translationY); return true; } static { SNACKBAR_BEHAVIOR_ENABLED = Build.VERSION.SDK_INT >= 11; } }

CustomLinearLayout.clase

 import android.content.Context; import android.support.design.widget.CoordinatorLayout; import android.util.AttributeSet; import android.widget.LinearLayout; @CoordinatorLayout.DefaultBehavior(MoveUpwardBehavior.class) public class CustomLinearLayout extends LinearLayout { public CustomLinearLayout(Context context) { super(context); } public CustomLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } public CustomLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } }

Muestra xml->actividad_inicio

Aquí user.example.charu.its2017huree es el nombre de mi paquete, reemplácelo con el suyo.

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:fitsSystemWindows="true" android:layout_height="match_parent"> <user.example.charu.its2017huree.CustomLinearLayout android:background="#098" android:gravity="bottom" android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello world" /> </user.example.charu.its2017huree.CustomLinearLayout>

Finalmente en mi Actividad llamada HomeActivity

 public class HomeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); CustomLinearLayout customLinearLayout = (CustomLinearLayout) findViewById(R.id.linearLayout); Snackbar.make(customLinearLayout, "Text to display", Snackbar.LENGTH_LONG).show(); } }

La fuente es de este ejemplo .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!