先决条件:
- 带有示例的Android中的浮动操作按钮(FAB)
- 如何在Android中添加小吃店
如果有人在他的android应用程序中实现了Floating Action Button(FAB),并且在同一应用程序中也存在Snackbar实现,则Snackbar肯定会与Floating Action Button重叠。看一下下面的GIF,它显示了Snackbar和Floating Action Button的问题:
如何解决这个问题?
因此,在本文中,我们通过在Android中举一个简单的示例来解决此问题。请注意,我们将使用Java语言实现此示例。
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
步骤2:在应用程序级别Gradle文件上添加依赖项。
- 在这里,我们使用由Google Material Design Team设计和开发的Floating action按钮。
- 将依赖项添加到build.gradle(app)文件中,如下所示:
implementation ‘com.google.android.material:material:1.3.0-alpha02’
- 确保将依赖项添加到应用程序级别的Gradle文件中。添加依赖项后,您需要单击Android Studio IDE右上角显示的“立即同步”按钮。
- 当用户单击立即同步按钮时,请确保您已连接到网络,以便它可以下载所需的文件。
- 如果您无法获得上述步骤,请参考下图:
步骤3:将FAB图标添加到Drawble文件
- 为了演示起见,将在Drawable文件夹中导入3个图标,一个可以导入他/她选择的图标。可以通过右键单击drawable文件夹-> New-> Vector Asset来做到这一点。请参考下图导入矢量图标。
- 现在选择您的矢量图标:
步骤4:使用activity_main.xml文件
- 在activity_main.xml文件中,添加一个浮动动作按钮(FAB)和一个按钮。因此,每当用户单击“按钮”时,就会弹出一个小吃栏。
- 在activity_main.xml文件中调用以下代码。为了清楚地理解,请参考下面给出的代码内的注释:
XML
Java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
public class MainActivity extends AppCompatActivity {
Button mSnackBarButton;
FloatingActionButton mAddFab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Register the show snackbar button with appropriate ID
mSnackBarButton = findViewById(R.id.show_snackbar_button);
// also register the floating action button with appropriate ID
mAddFab = findViewById(R.id.add_fab);
// Build and show the simple Snackbar with action button on it
mSnackBarButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar snackbar = Snackbar.make(view, "This is sample snackbar", Snackbar.LENGTH_SHORT);
// Set the Anchor View to perticular view to display the snackbar to top of it
snackbar.setAnchorView(mAddFab);
snackbar.setAction("OKAY", new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do appropriate action on click of snackbar action button
}
});
snackbar.show();
}
});
}
}
产生以下输出UI:
步骤5:使用MainActivity。 Java文件
- 现在,在MainActivity中以编程方式解决此问题。 Java文件。
- 可以观察以下代码,其中SHOW SNACKBAR按钮onclick侦听器已将AnchorView设置为父FAB。这样,即使弹出快餐栏后,父FAB还是可见的,并且快餐栏将显示在FAB的顶部。
- 调用以下代码,并在代码内部添加注释以更详细地了解代码。
Java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
public class MainActivity extends AppCompatActivity {
Button mSnackBarButton;
FloatingActionButton mAddFab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Register the show snackbar button with appropriate ID
mSnackBarButton = findViewById(R.id.show_snackbar_button);
// also register the floating action button with appropriate ID
mAddFab = findViewById(R.id.add_fab);
// Build and show the simple Snackbar with action button on it
mSnackBarButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar snackbar = Snackbar.make(view, "This is sample snackbar", Snackbar.LENGTH_SHORT);
// Set the Anchor View to perticular view to display the snackbar to top of it
snackbar.setAnchorView(mAddFab);
snackbar.setAction("OKAY", new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do appropriate action on click of snackbar action button
}
});
snackbar.show();
}
});
}
}
输出:在模拟器上运行
想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!