Intereting Posts

Сделать вид сверху вниз

Есть ли способ заставить закусочную выдвинуть вид вверх, когда он будет показан?

закусочная

В настоящее время, когда отображается snackbar, он накладывает вид сверху, так что похоже, что половина кнопки отключена, но я хочу, чтобы она почти «adjustPan» аналогична тому, как работает экранная клавиатура, когда она отображается на экране.

Кто-нибудь знает о каких-либо трюках для достижения этого?

Поместите свой вид внутри android.support.design.CoordinatorLayout

<android.support.design.widget.CoordinatorLayout android:id="@+id/coordinator" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true"> <View android:id="@+id/my_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_behavior="com.example.FloatingActionButtonBehavior"/> </android.support.design.widget.CoordinatorLayout> 

Важная часть здесь – атрибут app: layout_behavior. Здесь реализуется класс:

 public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<FloatingActionButton> { public FloatingActionButtonBehavior(Context context, AttributeSet attrs) { } @Override public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) { return dependency instanceof SnackbarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); child.setTranslationY(translationY); return true; } } 

Затем, когда вы показываете, что закусочная пропускает ссылку на CoordinatorLayout:

 CoordinatorLayout coordinator = findViewById(R.id.coordinator); Snackbar.make(coordinator, textResId, Snackbar.LENGTH_LONG) .setAction(R.string.accept_ok, new View.OnClickListener() { @Override public void onClick(View v) { } }) .setDuration(Snackbar.LENGTH_INDEFINITE) .show(); 

Надеюсь, что это поможет вам.

Введите описание изображения здесь

Snackbar найдет ближайший CoordinatorLayout качестве parentView ;

  findViewById(R.id.tv_main).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(findViewById(R.id.tv_main), "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); toolbar.getChildAt(1).setVisibility(View.GONE); } }); <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="s" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_marginBottom="200dp" android:layout_height="100dp"> <TextView android:id="@+id/tv_main" android:background="#4b14b1" android:layout_width="100dp" android:layout_height="100dp" /> </android.support.design.widget.CoordinatorLayout> </RelativeLayout>