物料卡中的标高未显示

问题描述 投票:0回答:1

我在 Android Studio 中创建了一个项目来实现视图绑定和数据绑定。我不知道为什么材料卡不显示海拔。我已经在清单文件中添加了声明

android:hardwareAccelerated="true"
。 材料卡位于我的片段内,该片段由我的活动托管...我想我在活动内膨胀该片段时犯了一个错误,这可能吗?

在我的布局中,我使用尺寸值“@dimen/elevation_lg”,即 24dp。

这是我的活动 .xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<layout 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"
    tools:context=".view.auth.LoginActivity">

    <FrameLayout
        android:id="@+id/fragment_container_login"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.appbar.MaterialToolbar
            android:id="@+id/toolbar"
            android:layout_width="0dp"
            android:layout_height="0dp" />

        <androidx.fragment.app.FragmentContainerView
            android:id="@+id/nav_host_fragment_login"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/nav_graph_login" />
    </FrameLayout>
</layout>

这是与上面的 .xml 布局文件关联的我的活动类:

class LoginActivity : AppCompatActivity() {

    private lateinit var toolbar: Toolbar
    private lateinit var appBarConfiguration: AppBarConfiguration
    private lateinit var navController: NavController

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val binding: ActivityLoginBinding =
            DataBindingUtil.setContentView(this, R.layout.activity_login)

        toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        initNavigation(R.id.nav_host_fragment_login)
    }

    override fun initNavigation(resNavController: Int) {
        val navHostFragment =
            supportFragmentManager.findFragmentById(resNavController) as NavHostFragment
        navController = navHostFragment.navController

        appBarConfiguration = AppBarConfiguration.Builder(navController.graph).build()

        toolbar.setupWithNavController(navController, appBarConfiguration)
    }
}

这是我的片段 .xml 文件,其中包含卡片:

<?xml version="1.0" encoding="utf-8"?>
<layout 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"
    tools:context=".view.auth.LoginFragment">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical">

        <com.google.android.material.card.MaterialCardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginHorizontal="@dimen/margin_md"
            android:layout_marginTop="@dimen/margin_md"
            android:checkable="true"
            android:clickable="true"
            android:elevation="@dimen/elevation_lg"
            android:focusable="true"
            app:cardBackgroundColor="@color/cardview_light_background"
            app:cardCornerRadius="@dimen/radius_sm"
            app:cardPreventCornerOverlap="true"
            app:cardUseCompatPadding="true">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="@dimen/margin_sm"
                android:orientation="vertical">
                
                <!-- other components -->

            </LinearLayout>
        </com.google.android.material.card.MaterialCardView>
    </LinearLayout>
</layout>

这是与上面的 .xml 布局文件关联的片段类:

class LoginFragment : Fragment() {

    private var _binding: FragmentLoginBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentLoginBinding.inflate(inflater, container, false)

        return binding.root
    }
}

正如我上面所说,我已经在清单文件中添加了声明 hardwareAccelerated=true 。

android xml kotlin android-fragments android-elevation
1个回答
0
投票

不要使用

android:elevation="@dimen/elevation_lg"
,而是使用
app:cardElevation
.

<com.google.android.material.card.MaterialCardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ...
    app:cardElevation="@dimen/elevation_lg"
    ...>
    <!-- Other attributes -->
</com.google.android.material.card.MaterialCardView>

© www.soinside.com 2019 - 2024. All rights reserved.