小编Flo*_*her的帖子

android:textFontWeight 没有效果

当我android:textFontWeight在 a 上使用该属性时TextView,它不会从字体系列中选择合适的字体。我在API 28上对其进行了测试,因为该属性仅在 28+ 上可用

<TextView
    android:id="@+id/text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/myfont"
    android:text="Hello World!" />
Run Code Online (Sandbox Code Playgroud)

myfont字体家庭的定义如下:

<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font
    app:fontStyle="normal"
    app:fontWeight="400"
    app:font="@font/myfont_regular" />
<font
    app:fontStyle="normal"
    app:fontWeight="200"
    app:font="@font/myfont_thin" />
Run Code Online (Sandbox Code Playgroud)

在 API 28 上,我希望TextView选择myfont_thin,但事实并非如此。我也用其他重量试过,但没有成功。

fonts android typeface android-typeface

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

Android 上的 @Module.subcomponents

我有 1 个应用程序和 1 个活动、1 个父组件和 1 个子组件的以下(简化)设置:

应用

public class ExampleApp extends Application {
    private AppComponent component;

    @Override
    public void onCreate() {
        super.onCreate();

        component = DaggerAppComponent.create();
    }

    public AppComponent getAppComponent() {
        return component;
    }
}
Run Code Online (Sandbox Code Playgroud)

应用组件

@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    ActivityComponent.Builder getActivityComponentBuilder();
}
Run Code Online (Sandbox Code Playgroud)

活动子组件

@PerActivity
@Subcomponent(modules = {ActivityModule1.class, ActivityModule2.class})
public interface ActivityComponent {

    void inject(MainActivity mainActivity);


    @Subcomponent.Builder
    interface Builder {

        @BindsInstance
        Builder binding1(@Named("binding1") int binding1);

        @BindsInstance
        Builder binding2(@Named("binding2") int binding2);

        ActivityComponent build(); …
Run Code Online (Sandbox Code Playgroud)

java android dependency-injection dagger dagger-2

6
推荐指数
0
解决办法
296
查看次数

如何使用协程从 Room 返回单个(非 LiveData)对象

LiveDataRoom 执行的查询会自动在后台线程上返回。但我想返回一个未包装的单个值LiveData(因为我不想要实时更新)。如何使用协程来实现这一点?

如何Task从该函数返回对象?

fun getTask(id: Int): Task {
    viewModelScope.launch {
        repository.getTask(id)
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数位于 ViewModel 内部。它将调用转发给 DAO:

@Query("SELECT * FROM task_table WHERE id = :id")
fun getTask(id: Int): Task
Run Code Online (Sandbox Code Playgroud)

kotlin android-room android-livedata android-architecture-components kotlin-coroutines

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

Android工具栏minHeight多余?

我在大多数情况下构建了我的工具栏,minHeight设置为actionBarSize:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimary"
android:minHeight="?actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除此属性,则根本没有区别.actionBarSize即使我删除菜单并将应用程序名称设置为空String,工具栏也会保留,因此工具栏中根本没有显示任何内容.

这里有什么我想念的吗?

xml android toolbar

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

自动调整TextView - 我可以忽略意外的名称前缀警告吗?

我想在我的项目中使用自动调整文本,当我使用android:前缀时,AS不会抱怨.但由于我想要向下兼容,我使用app前缀.它在应用程序运行时有效,但xml预览有问题,我Unexpected namespace prefix "app" found for tag TextView在每行开头都收到警告app:.

我可以简单地忽略它吗?

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.exampleapp">

    <TextView
        android:id="@+id/text_view_auto_size"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:text="Hello World!"
        app:autoSizeTextType="uniform"
        app:autoSizePresetSizes="@array/autosize_text_sizes"
        app:autoSizeMaxTextSize="200dp"
        app:autoSizeMinTextSize="10dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

android textview

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

Modal BottomSheet面向导航栏

我正在尝试BottomSheetDialogFragment构建一个模态底页,但正如您在屏幕截图中看到的那样,它不是在导航栏后面向上滑动,而是在它的前面.这是向上滑动的方向.当它完全启动时,它位于导航栏上方.但它出现时看起来很难看.

知道如何解决这个问题吗?

在此输入图像描述

BottomSheet类代码:

public class ExampleBottomSheetDialog extends BottomSheetDialogFragment {
private BottomSheetListener mListener;

public interface BottomSheetListener {
    void onButton1Clicked();
    void onButton2Clicked();
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);

    mListener = (BottomSheetListener) context;
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.bottom_sheet_layout, container);

    Button button1 = v.findViewById(R.id.button1);
    Button button2 = v.findViewById(R.id.button2);

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mListener.onButton1Clicked();
            dismiss();
        }
    });

    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void …
Run Code Online (Sandbox Code Playgroud)

android dialog dialogfragment bottom-sheet

5
推荐指数
0
解决办法
525
查看次数

API 26模拟器上的Android WidgetPreview错误

我正在尝试使用API​​ 26模拟器上的WidgetPreview应用程序创建窗口小部件预览,但它显示"错误保存预览"作为Toa​​st消息.它适用于API级别21.在线结果为零.任何人都知道是什么原因引起的?

android widget android-widget

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

缺少障碍的约束警告 - Bug?

我得到的缺失制约了警告Barrier,这已被添加到(现在是稳定的)版本1.1.0ConstraintLayout.

此视图不受约束,它只有设计时位置,因此除非添加约束,否则它将跳转到(0,0)

但是,据Barrier我所知,不使用任何约束,我认为甚至不可能添加它们

这是一个错误还是我错过了什么?

android android-constraintlayout

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

Firestore - 在本地合并两个查询

由于ORFirestore中没有逻辑运算符,因此我尝试在本地合并2个单独的查询.

现在我想知道如何保持结果的正确顺序.当我独立运行2个查询时,我无法特定地查询结果(至少不是我使用该orderBy方法从Firestore获得结果的顺序).

我的想法是将第二个查询放在onSuccessListener第一个查询中.这是一个表现明智的坏主意吗?

public void loadNotes(View v) {
    collectionRef.whereLessThan("priority", 2)
            .orderBy("priority")
            .get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                    for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                        Note note = documentSnapshot.toObject(Note.class);
                        //adding the results to a List
                    }

                    collectionRef.whereGreaterThan("priority", 2)
                            .orderBy("priority")
                            .get()
                            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                                @Override
                                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                                    for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                                        Note note = documentSnapshot.toObject(Note.class);
                                        //adding the results to a List
                                    }
                                }
                            });
                }
            });
}
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

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

带有 MVVM 架构组件的 StartActivityForResult

在其中一个 Google Codelabs 中,Activity1显示一个RecyclerView和 按钮单击打开Activity2,可以在其中添加新条目。

他们不是访问ViewModelinActivity2并将条目直接添加到数据库中,而是将条目发送回Activity1并将其插入那里。

这背后的原因是什么?为什么要发回数据Activity1?为什么不叫ViewModelProviders.of(this)Activity2和插入那里的项目吗?

FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, NewWordActivity.class);
            startActivityForResult(intent, NEW_WORD_ACTIVITY_REQUEST_CODE);
        }
    });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
        Word word = new Word(data.getStringExtra(NewWordActivity.EXTRA_REPLY));
        mWordViewModel.insert(word);
    } else {
        Toast.makeText( …
Run Code Online (Sandbox Code Playgroud)

android android-mvvm android-viewmodel android-architecture-components

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