小编Coo*_*tor的帖子

Material Design,AppCompat和向后兼容性

我正在尝试更好地理解使用Material Design的原则(我是这个领域的新手,并且一直在阅读文档和教程,但主题对我来说仍然有点模糊),我会很高兴的一些帮助.到目前为止我尝试过的是两个文件夹(值和值-21),每个文件夹都有一个styles.xml文件 -

价值观/ styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
Run Code Online (Sandbox Code Playgroud)

值-V21/styles.xml:

<style name="AppTheme" parent="android:Theme.Material.NoActionBar"></style>
Run Code Online (Sandbox Code Playgroud)

问题从我尝试使用从AppCompatActivity继承的活动开始(据我所知,这是我需要做的事情,以便在Lollipop之前支持向设备的向后兼容性,例如Material Design?我是否正确?这里有更多信息大).如果我这样做,该应用程序将无法在具有API 21或更高版本的设备上运行,因为"AppTheme"必须从AppCompat继承.

我可以做的就是创建一个继承自AppCompat的基本主题,然后使两个文件中的样式继承该基本主题...但是我不再继承Material了....这让我想到了这个问题 -

Material Design只是一个给定的主题吗?如果是这样,我该如何解决我的问题?使用AppCompatActivity在这里完成了什么?或者,Material Design本质上只是一套我应该遵循的规则和原则?如果是这样,为什么我们需要Theme.Material.*呢?我会很高兴有任何关于这个问题的人可以给我的额外信息.

谢谢!

android backwards-compatibility material-design appcompatactivity

3
推荐指数
1
解决办法
1353
查看次数

BroadcastReceiver 未接收本地广播

我正在尝试扩展 FCM 服务,并在被呼叫MainActivity时广播。确实被调用了,但是方法没有被调用。据我所知,我不需要在清单中定义任何其他内容,因为这是本地广播。这些是我的课程:onNewToken()onNewToken()onReceive()

MainActivity.kt

package com.reali.app.mymessagingapp

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v4.content.LocalBroadcastManager
import android.widget.TextView
import com.google.android.gms.tasks.OnCompleteListener
import com.reali.app.mymessagingapp.MyFirebaseMessagingService.Companion.TOKEN_REFRESHED_EVENT
import com.google.firebase.iid.FirebaseInstanceId
import com.google.firebase.iid.InstanceIdResult

class MainActivity : AppCompatActivity() {
    private lateinit var broadcastReceiver: BroadcastReceiver
    private lateinit var tvTitle: TextView
    private lateinit var tvToken: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tvTitle = findViewById(R.id.tvTitle)
        tvToken = findViewById(R.id.tvToken)

        broadcastReceiver = object : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) …
Run Code Online (Sandbox Code Playgroud)

android kotlin

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

Android-查找子字符串并将其设为粗体

找到str1作为str2的子字符串,使其变为粗体(即在str2中),然后将其显示为textview的正确方法是什么?

android text textview

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