小编Sum*_*kla的帖子

具有透明背景的BottomAppBar 内的BottomNavigationView

我一直在将新的(ish)材质 BottomAppBar 与标准的底部导航视图相结合。我的xml是这样的:

      <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottom_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:contentInsetStart="0dp"
        app:contentInsetStartWithNavigation="0dp"
        app:fabAlignmentMode="center">

        <com.google.android.material.bottomnavigation.BottomNavigationView
          android:id="@+id/bottom_navigation"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginStart="0dp"
          android:layout_marginEnd="0dp"
          android:background="@android:color/transparent"
          app:itemTextAppearanceActive="@style/AppTheme.Text.BottomNavText.Active"
          app:itemTextAppearanceInactive="@style/AppTheme.Text.BottomNavText"
          app:labelVisibilityMode="labeled"
          app:menu="@menu/bottom_nav_menu" />

      </com.google.android.material.bottomappbar.BottomAppBar>
Run Code Online (Sandbox Code Playgroud)

在以前的版本 - 1.0.0 - 这工作正常,我仍然可以按预期看到 FAB 插图。唯一的小缺点是这个版本的材质组件库没有对底部应用栏的高度效果进行排序,所以栏和上面的内容之间的区别并不明确。

当我升级到最新的库(在撰写本文时我相信是)时implementation 'com.google.android.material:material:1.1.0-alpha09',我得到了 BottomAppBar 的高度效果,但是当我将透明背景应用到 BottomNavigationView 时,我得到了一个非常奇怪的视觉效果,对于我的生活我不能理解。

奇怪的底部应用栏效果

如果我删除透明背景颜色,那么效果会消失,但我会丢失 FAB 插图,如下所示:

底部导航没有透明度,失去插入效果

如果我完全删除底部导航视图子项,并且只有底部应用栏,我会看到正常的视觉效果,但没有我的导航:

没有作为孩子的底部导航视图,一切正常

我会喜欢: - 一个很好的解决方案,将底部导航视图合并到 BottomAppBar 中,同时保留 1.1.0 版库的良好提升效果,并且在其中有效地包含 BottomNavigationView,因此我保留了该导航组件的所有优点 - 或解释到底是什么导致了这种奇特的第一次海拔效应,理想情况下是一种修复它的方法

android material-design bottomnavigationview material-components bottomappbar

12
推荐指数
1
解决办法
4043
查看次数

资源 android:attr/android:progressBarStyle 未找到

在将 Android Studio 更新到最新版本后尝试构建项目时,出现此错误。我收到以下错误:

C:\Users\YaCn.gradle\caches\transforms-2\files-2.1\5502c0022567bdcff063e0fb4352b137\folioreader-0.3.3\res\layout\progress_dialog.xml:10: AAPT: 错误/资源栏:androidprogressattr成立。

那个 XML :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:id="@+id/layout_loading"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:gravity="center">
        <ProgressBar android:id="@+id/loading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="?android:attr/android:progressBarStyle"/>
        <TextView android:id="@+id/label_loading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:textSize="18sp"
            android:textColor="@android:color/white"
            android:text="@string/loading"/>
    </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

构建gradle文件:

   apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.admin.hashtab"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

        manifestPlaceholders = [manifestApplicationId          : "${applicationId}",
                                onesignal_app_id               : "654bcb8c-90a6-4012-924a-e18e5787a7de",
                                onesignal_google_project_number: "3520309722"]

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles …
Run Code Online (Sandbox Code Playgroud)

android android-progressbar android-xml android-styles

10
推荐指数
2
解决办法
3360
查看次数

在 Android 上使用 MVVM 模式时从一个片段导航到另一个片段

  • 我正在使用 MVVM 模式创建一个应用程序。我使用导航图来管理应用程序中的片段,根据推荐的方法,我们不必将 UI 逻辑放在Activity/Fragments中,而是放在Viewmodel中。

  • 所以我的问题是如何从一个片段导航到另一个片段。我知道这可以直接在片段内部完成,navController.navigate(R.id.action_here)但是我将如何在按下按钮时处理 ViewModel 的导航?

我的代码:

IntroViewModel.kt

class IntroViewModel : ViewModel() {

    fun onBtn1Pressed(view: View) {
        Log.d(IntroViewModel::class.java.simpleName, ": onBtn1Pressed")
    }

    fun onBtn2Pressed(view: View) {
        Log.d(IntroViewModel::class.java.simpleName, ": onBtn2Pressed ")
    }
}
Run Code Online (Sandbox Code Playgroud)

IntroFragment.kt:

class IntroFragment : Fragment() {

    private lateinit var viewModel: IntroViewModel
    private lateinit var navController: NavController
    lateinit var introBinding: IntroFragmentBinding

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        introBinding = DataBindingUtil.inflate(inflater, R.layout.intro_fragment, container, false)
        viewModel = ViewModelProviders.of(this).get(IntroViewModel::class.java) …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-mvvm android-jetpack

6
推荐指数
1
解决办法
5632
查看次数

晶圆厂底部导航

我目前正在和BottomNavigationView和一起工作FloatingActionButton。我要实现的是以下设计:

在此处输入图片说明

而我尝试了:

<?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:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_insetEdge="bottom"
    tools:context=".activity.BottomNavPrimary">

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|bottom" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottomNavPrimary"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:layout_insetEdge="bottom"
        android:background="?android:attr/windowBackground"
        app:menu="@menu/bottom_nav_primary"></android.support.design.widget.BottomNavigationView>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

android android-layout floating-action-button android-coordinatorlayout bottomnavigationview

5
推荐指数
3
解决办法
9858
查看次数

如何在Android中获取实质性的图标按钮?

如何在android中获取材质按钮?我已经尝试过此代码,但是不知道如何包含这样的图像:

<com.google.android.material.button.MaterialButton
    android:id="@+id/material_button"
    style="@style/Widget.MaterialComponents.Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add to Cart"/>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

android android-button material-design

5
推荐指数
1
解决办法
129
查看次数

使用Firebase数据库中的Map检索数据

我试图以Map格式从firebase数据库中检索数据,但我得到一个空指针异常.我已成功使用map将数据插入到我的firebase数据库中.

这是我的代码:

public class Chat extends AppCompatActivity {

  DatabaseReference databaseReference1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    Firebase.setAndroidContext(this);
    databaseReference1 = FirebaseDatabase.getInstance().getReferenceFromUrl("URL");

    databaseReference1.addChildEventListener(new com.google.firebase.database.ChildEventListener() {
        @Override
        public void onChildAdded(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
            Map map = (Map) dataSnapshot.getValue();
            String message = map.get("text").toString();   //ERROR GOES HERE!!
            String userName = map.get("Username").toString();

        }

        @Override
        public void onChildChanged(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(com.google.firebase.database.DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database

4
推荐指数
1
解决办法
5524
查看次数

ScrollView 在约束布局内不起作用

我在 ConstraintLayout 中有一个滚动视图。但滚动视图在 ConstraintLayout 中不起作用。我尝试使用 NestedScrollView 而不是 ScrollView,但它仍然不起作用。ScrollView 在 LinearLayout 或relativelayout 中工作得很好,但在 ConstraintLayout 中不起作用。我将 android:layout_height 更改为 match_parent 和 wrap_content 但它不起作用。问题是什么?

<androidx.constraintlayout.widget.ConstraintLayout
    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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >

    <include
        android:id="@+id/other_toolbar_xml"
        layout="@layout/other_toolbar_xml"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintTop_toBottomOf="@id/other_toolbar_xml"
        android:fillViewport="true"
        tools:ignore="MissingConstraints"
        >

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >

            <ImageView
                android:id="@+id/img_content_xml"
                android:layout_width="match_parent"
                android:layout_height="170dp"
                app:layout_constraintTop_toBottomOf="@id/other_toolbar_xml"
                android:scaleType="fitXY"
                tools:ignore="NotSibling"
                />

            <TextView
                android:id="@+id/title_content_xml"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@id/img_content_xml"
                android:layout_marginRight="16dp"
                android:paddingLeft="16dp"
                android:textDirection="rtl"
                android:text="title"
                android:textSize="17sp"
                android:textColor="#1d1d1d"
                />

            <TextView
                android:id="@+id/content_content_xml"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@id/title_content_xml"
                android:layout_marginTop="20dp"
                android:layout_marginRight="16dp"
                android:layout_marginEnd="16dp"
                android:paddingLeft="16dp"
                android:textDirection="rtl"
                android:text="content"
                android:textColor="#1d1d1d"
                /> …
Run Code Online (Sandbox Code Playgroud)

android android-scrollview android-constraintlayout

4
推荐指数
1
解决办法
8562
查看次数

应用内订阅不显示测试卡

  • 我已经在我的 Android 应用程序中实现了应用程序内订阅并按照说明进行操作:

  • 我已经添加了一个email作为许可证测试器,它存在于我的设备(release build)中。
    但它不显示测试卡,而是显示真卡

  • 我还上传了我的应用程序的发布版本,Internal test track但结果与上面相同。

谁能告诉我我做错了什么?

android google-play in-app-subscription

4
推荐指数
1
解决办法
1034
查看次数

在颤动中具有圆形背景的文本小部件

在此处输入图片说明

如何在Text小部件中获得这种类型的圆形背景?

flutter flutter-layout

2
推荐指数
2
解决办法
1686
查看次数

带有视图绑定的 BaseFragment

为了在 Android 应用程序中使用,我基本上是为&viewbinding创建基类,以删除每次编写膨胀代码的样板。ActivityFragment

活动:

BaseActivityviewbinding

abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = getViewBinding()
    }

    abstract fun getViewBinding(): VB

}
Run Code Online (Sandbox Code Playgroud)

MainActivity:

class MainActivity : BaseActivity<ActivityMainBinding>() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
        //we can directly use binding now and it works fine inside activity
        //binding.view.doSomething() 
    }

 override fun getViewBinding(): ActivityMainBinding = ActivityMainBinding.inflate(layoutInflater)
}
Run Code Online (Sandbox Code Playgroud)

片段

BaseFragment:

abstract class BaseFragment<VB : ViewBinding> : …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-mvvm android-viewbinding

2
推荐指数
1
解决办法
5366
查看次数

XML/android: How to make white underline for RecyclerView Item?

I need to make a little white line under my every recycler view item (from left to right corner), not for any particular element in that item, but for the whole item. (that way it's easier for a user to see which elements are in this particular item, and where another item starts)

Here is my item layout:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/_5sdp"
    app:cardCornerRadius="0dp"
    app:cardElevation="0dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimaryDark">

        <TextView
            android:id="@+id/nameView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Mike"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/_21sdp" …
Run Code Online (Sandbox Code Playgroud)

xml android view android-recyclerview

0
推荐指数
1
解决办法
120
查看次数