当我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,但事实并非如此。我也用其他重量试过,但没有成功。
我有 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) 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
我在大多数情况下构建了我的工具栏,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,工具栏也会保留,因此工具栏中根本没有显示任何内容.
这里有什么我想念的吗?
我想在我的项目中使用自动调整文本,当我使用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) 我正在尝试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) 我正在尝试使用API 26模拟器上的WidgetPreview应用程序创建窗口小部件预览,但它显示"错误保存预览"作为Toast消息.它适用于API级别21.在线结果为零.任何人都知道是什么原因引起的?
我得到的缺失制约了警告Barrier,这已被添加到(现在是稳定的)版本1.1.0的ConstraintLayout.
此视图不受约束,它只有设计时位置,因此除非添加约束,否则它将跳转到(0,0)
但是,据Barrier我所知,不使用任何约束,我认为甚至不可能添加它们
这是一个错误还是我错过了什么?
由于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) 在其中一个 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
android ×9
android-architecture-components ×2
java ×2
android-mvvm ×1
android-room ×1
bottom-sheet ×1
dagger ×1
dagger-2 ×1
dialog ×1
firebase ×1
fonts ×1
kotlin ×1
textview ×1
toolbar ×1
typeface ×1
widget ×1
xml ×1