我正在尝试使用新的 Android 架构设置带有应用栏配置的导航抽屉布局。我遇到的问题是 android studio 告诉我设置抽屉布局的方式已被弃用。
这是我的 xml 配置
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/top_app_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/MaterialTheme"
style="@style/Widget.MaterialComponents.Toolbar.Primary"
/>
</com.google.android.material.appbar.AppBarLayout>
<androidx.drawerlayout.widget.DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation_graph"/>
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="230dp"
android:layout_height="match_parent"
android:background="@drawable/gradient_background"
app:itemTextColor="@android:color/black"
app:menu="@menu/drawer_menu"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:theme="@style/Theme.Design">
</com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
这是我如何声明 AppBarConfiguration 和 Drawer Layout
private AppBarConfiguration appBarConfiguration;
private NavController navController;
MaterialToolbar topAppBar;
private ActionBarDrawerToggle actionBarDrawerToggle;
DrawerLayout drawerLayout;
NavigationView navigationView;
Run Code Online (Sandbox Code Playgroud)
这是我找到 NavController、topAppBar、drawerLayout 和 NavigationView 的地方
navController = Navigation.findNavController(this, …
Run Code Online (Sandbox Code Playgroud) appbar uinavigationcontroller android-studio navigation-drawer
您好,我有一个底部工作表对话框片段,当单击回收器视图中的项目时会显示该片段。底部表单实现的显示位于回收视图的适配器中。我遇到的问题是,当您快速双击项目以显示底部工作表时,它会显示两次,是否有一种方法可以将点击限制为仅一次点击,或者在显示底部工作表对话框片段时不再显示底部工作表对话框片段通过检查
以下是如何在回收视图中显示项目单击的底部工作表
@Override
public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int position) {
myViewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BottomSheetFragment bottomSheetFragment = new BottomSheetFragment();
Bundle bundle = new Bundle();
bundle.putInt("id",productList.get(position).getId());
bundle.putString("name",productList.get(position).getName());
bundle.putDouble("price",productList.get(position).getPrice());
bundle.putInt("stock",productList.get(position).getStock());
bundle.putInt("quantity",productList.get(position).getQuantity());
bundle.putString("photo",productList.get(position).getPhoto());
bottomSheetFragment.setArguments(bundle);
bottomSheetFragment.show(fragmentManager, bottomSheetFragment.getTag());
}
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试通过执行以下操作来使用 Muhannad Fakhouri 答案
声明一个布尔值来显示 BottomSheet 是否显示
private boolean isBottomSheetShowing = false;
Run Code Online (Sandbox Code Playgroud)
底部工作表中的实现
if(!isBottomSheetShowing){
isBottomSheetShowing = true;
ItemBottomSheet itemBottomSheet = new ItemBottomSheet();
Bundle bundle = new Bundle();
bundle.putString("code",itemPosition.getCode());
bundle.putString("name",itemPosition.getName());
bundle.putString("description",itemPosition.getDescription());
bundle.putString("upcCode",itemPosition.getUpcCode());
bundle.putString("photoBlob",itemPosition.getPhotoBlob());
bundle.putDouble("discount",itemPosition.getDiscount());
bundle.putDouble("price",itemPosition.getPrice());
bundle.putInt("available",itemPosition.getAvailable());
itemBottomSheet.setArguments(bundle); …
Run Code Online (Sandbox Code Playgroud) android android-studio bottom-sheet android-bottomsheetdialog
在应用程序级别 Gradle 中实现以下依赖项后
implementation "androidx.fragment:fragment:1.3.0-beta02"
implementation "androidx.activity:activity:1.2.0-beta02"
Run Code Online (Sandbox Code Playgroud)
我在 onActivityCreated 方法的片段中发现了以下警告
Overrides deprecated method in 'androidx.fragment.app.Fragment'
Run Code Online (Sandbox Code Playgroud)
实施该方法的新方法可能是什么?下面是我的 onActivityCreated 方法
implementation "androidx.fragment:fragment:1.3.0-beta02"
implementation "androidx.activity:activity:1.2.0-beta02"
Run Code Online (Sandbox Code Playgroud)
我正在使用 requestPermissionLauncher 的依赖项。
java android-fragments android-studio deprecation-warning androidx
我在文本输入布局中有一个前缀文本,但仅当我单击文本输入编辑文本(位于具有前缀文本的文本输入布局内)时,它才会显示。如何使前缀文本始终显示提示
下面是我的文本输入编辑文本
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_number"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/til_country"
android:layout_marginStart="30dp"
android:layout_marginLeft="30dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="30dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="10dp"
android:padding="5dp"
app:boxBackgroundColor="#EFEFF2"
app:prefixText="+01 - "
app:shapeAppearanceOverlay="@style/RoundedTextInputLayout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_first_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="@string/number"
android:inputType="phone"
android:maxLength="100"
android:textSize="15sp" />
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我想实现的是
+01 - 
Run Code Online (Sandbox Code Playgroud)
前缀中的上述文本应始终显示
我尝试执行以下操作
app:prefixTextColor="@color/secondaryDarkColor"
Run Code Online (Sandbox Code Playgroud) prefix android-studio android-textinputlayout textinputlayout
我有一个文本,我正在使用 Google 字体进行样式设置并且工作正常,但是当我在文本之前添加 const 时,我收到无效的常量值错误
下面是我如何在没有 const 的情况下实现
Text(
'Voila',
style: GoogleFonts.dawningOfANewDay(fontSize: 30),
),
Run Code Online (Sandbox Code Playgroud)
下面是我尝试使用 const 实现的方法
const Text(
'Voila',
style: GoogleFonts.dawningOfANewDay(fontSize: 30),
),
Run Code Online (Sandbox Code Playgroud)
下面是我如何尝试使谷歌字体保持不变,但错误仍然存在
const Text(
'Voila',
style: const GoogleFonts.dawningOfANewDay(fontSize: 30),
)
Run Code Online (Sandbox Code Playgroud) 我有一个字符串,我想将其转换为布尔值,下面是字符串的样子
String isValid = "false";
Run Code Online (Sandbox Code Playgroud)
字符串isValid
可以是true
或者false
有没有办法可以直接将此String isValid 转换为Boolean。我已经尝试过示例问题和解决方案,但它们只是转换硬编码的字符串,例如大多数答案只是当字符串为true
我有一个文本输入布局,里面有文本输入编辑文本。文本输入编辑文本在末尾有一个 Drawable。我想要实现的是在单击时使可绘制对象在最后执行某些操作,例如显示 Toast 消息
下面是我的 XML 代码
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_toast"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:padding="3dp">
<!--android:maxLength="13"-->
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_toast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_calendar"
android:drawableRight="@drawable/ic_calendar"
android:hint="@string/date_from"
android:inputType="date" />
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点
android android-edittext android-textinputlayout android-textinputedittext
我最近从 4.2.2 升级了我的 Gradle 版本。到 7.0.0。Android Studio 运行应用程序得很好,直到我升级并收到以下错误
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.40 and higher.
The following dependencies do not satisfy the required version:
root project 'MyNewApp' -> androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0-alpha03 -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20
Run Code Online (Sandbox Code Playgroud)
下面是我的项目级别grale
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
//classpath 'com.android.tools.build:gradle:4.2.2'
def nav_version = "2.3.0-alpha03"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
classpath 'com.google.gms:google-services:4.3.8'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个名为flutter_slidable 的库。下面是我的 fetchItems 方法
static Future<List<Item>> fetchItems(String url) async {
try {
// pub spec yaml http:
// import 'package:http/http.dart' as http;
final response = await http.get(
Uri.parse(
url),
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer tltsp6dmnbif01jy9xfo9ssn4620u89xhuwcm5t3",
}) /*.timeout(const Duration(seconds: Config.responseTimeOutInSeconds))*/;
final List<Item> itemsList;
if (response.statusCode == 200) {
itemsList = json
.decode(response.body)
// In event of failure return line below
//.cast<Map<String, dynamic>>()
.map<Item>((json) => Item.fromJson(json))
.toList();
} else if (response.statusCode == 401) {
itemsList = [];
} else …
Run Code Online (Sandbox Code Playgroud) 我下面有一个函数,它有一个输入日期,它将以格式返回下个月的第一个和最后一个日期MM/dd/yyyy
。
String string = "01/01/2022";
DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date dt = sdf .parse(string);
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.MONTH, 1);
String firstDate = sdf.format(c.getTime());
System.out.println("FirstDate:" + firstDate);
c.add(Calendar.MONTH, 1);
c.add(Calendar.DAY_OF_MONTH, -1);
String lastDate = sdf.format(c.getTime());
System.out.println("LastDate:" + lastDate);
Run Code Online (Sandbox Code Playgroud)
上面的内容会给我如下的输出
FirstDate:02/01/2022
LastDate:02/28/2022
Run Code Online (Sandbox Code Playgroud)
如果输入是上个月的第一天,这效果很好,我想要实现的是获取下一个月的 FirstDate 和 LastDate,month
即使输入的日期不是该月的第一天,例如01/31/2022
给出我下面的输出
FirstDate:02/28/2022
LastDate:03/27/2022
Run Code Online (Sandbox Code Playgroud)
但我仍然希望它能给我第一个
FirstDate:02/01/2022
LastDate:02/28/2022
Run Code Online (Sandbox Code Playgroud) android ×3
flutter ×3
java ×3
dart ×2
androidx ×1
appbar ×1
boolean ×1
bottom-sheet ×1
calendar ×1
date ×1
datetime ×1
dismissible ×1
flutter-text ×1
google-fonts ×1
gradle ×1
kotlin ×1
prefix ×1
string ×1