小编Zai*_*ain的帖子

如何像 Google Chrome 浏览器一样拆分选项菜单

如何像chrome浏览器一样拆分菜单,如图所示:

图像

这是我的实际代码

<menu 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="materialtest.vivz.slidenerd.activities.MainActivity">

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never" />

</menu>
Run Code Online (Sandbox Code Playgroud)

android android-menu

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

房间数据库迁移:java.lang.IllegalStateException:迁移未正确处理 &lt;table_name&gt;

我正在尝试使用房间数据库创建一个新表。我遵循了与程序中已有的第一个表相同的原则,但是当运行应用程序时,我收到此错误:

Caused by: java.lang.IllegalStateException: Migration didn't properly handle: WaterFountainEntry(com.mpms.relatorioacessibilidadecortec.entities.WaterFountainEntry).
     Expected:
    TableInfo{name='WaterFountainEntry', columns={waterFountainHeight=Column{name='waterFountainHeight', type='REAL', affinity='4', notNull=false, primaryKeyPosition=0, defaultValue='null'}, waterFountainID=Column{name='waterFountainID', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, cupHolderHeight=Column{name='cupHolderHeight', type='REAL', affinity='4', notNull=false, primaryKeyPosition=0, defaultValue='null'}, schoolEntryID=Column{name='schoolEntryID', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, waterFountApproximation=Column{name='waterFountApproximation', type='REAL', affinity='4', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[ForeignKey{referenceTable='SchoolEntry', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[schoolEntryID], referenceColumnNames=[cadID]}], indices=[]}
     Found:
    TableInfo{name='WaterFountainEntry', columns={waterFountainID=Column{name='waterFountainID', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, waterFountainHeight=Column{name='waterFountainHeight', type='DOUBLE', affinity='4', notNull=true, primaryKeyPosition=0, defaultValue='null'}, cupHolderHeight=Column{name='cupHolderHeight', type='DOUBLE', affinity='4', notNull=true, primaryKeyPosition=0, defaultValue='null'}, schoolEntryID=Column{name='schoolEntryID', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, waterFountApproximation=Column{name='waterFountApproximation', type='DOUBLE', affinity='4', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[ForeignKey{referenceTable='SchoolEntry', …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-room

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

如何在 api 级别 29 中使用 MediaStore API 获取 pdf uri?

我正在使用媒体商店在回收站视图中列出 pdf。它在android 10 之前都可以正常工作,也可以在 android 11 中运行,但只能在 android 10 中运行。

我也在requestLegacyExternalStorage=true清单中设置了。

build.gradle

  compileSdkVersion 29
  buildToolsVersion "30.0.2"
  minSdkVersion 21
  targetSdkVersion 29
Run Code Online (Sandbox Code Playgroud)

获取PDF.kt

 class FetchPdf(private val applicationContext: Context) {
        private val arrayList = ArrayList<Pdf>()
    
        fun getPdf(): ArrayList<Pdf> {
    
            val collection = MediaStore.Files.getContentUri("external")
            val projection = arrayOf(
                    MediaStore.Files.FileColumns._ID,
                    MediaStore.Files.FileColumns.DATE_MODIFIED,
                    MediaStore.Files.FileColumns.DISPLAY_NAME,        
                    MediaStore.Files.FileColumns.SIZE,
                    MediaStore.Files.FileColumns.DATA
            )
    
            val mimeType = "application/pdf"
    
            val whereClause = MediaStore.Files.FileColumns.MIME_TYPE + " IN ('" + mimeType + "')"
            val orderBy = MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC"
            val cursor: …
Run Code Online (Sandbox Code Playgroud)

android mediastore

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

使用带有jetpack导航组件的导航抽屉时如何更改工具栏图标(汉堡包图标)

我正在使用 jetpack 导航组件来构建导航抽屉,我想更改工具栏的汉堡包图标,我尝试了很多解决方案,例如波纹管,但它们不起作用

app:navigationIcon="@drawable/menu"
Run Code Online (Sandbox Code Playgroud)

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.menu);
Run Code Online (Sandbox Code Playgroud)

这是我的代码

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)
    navController=findNavController(R.id.nav_host_fragment)
    appBarConfiguration=AppBarConfiguration(setOf(R.id.nav_acceuil,R.id.nav_notifications,R.id.nav_gerer,R.id.nav_deconnexion),drawer_layout)
    setupActionBarWithNavController(navController,appBarConfiguration)
    nav_view.setupWithNavController(navController);
}
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer hamburger-menu android-jetpack android-jetpack-navigation

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

如何为 Android TabLayout 添加水平滚动指示器

我希望为Android TabLayout添加水平滚动视图。

TabLayout 中有多个选项卡并且是可滚动的。由于上面有多个选项卡,乍一看,其中一些选项卡是不可见的。用户必须滚动才能到达最右侧的选项卡(通常是隐藏的),因此这些选项卡不会引起用户的注意。

想法是有一个水平滚动指示器或一个箭头,指示右侧有更多选项卡,以便用户可以滚动以查找/使用它们。

设计思想是有一个scrollIndicator 而没有一个tabIndicator。我从谷歌找到了下面的图片,它更接近这个想法。 在此处输入图片说明

提前致谢,

android android-layout android-tablayout

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

在 android 中以毫米为单位的视图大小

我想以编程方式设置一些的大小(Viewmm 为单位,而不是dp在 android 中)。

虽然在 in 中更容易做,xml但我需要在 Java 中做。

有人可以帮我吗。我被困住了。

java xml size android button

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

如何从 Android 11 设备的共享存储中选取图像?

我使用了这个库 \xc2\xa0 https://github.com/Dhaval2404/ImagePicker \xc2\xa0 并且我收到了来自 android play 控制台团队的警告我们检测到您的应用程序在清单文件中包含 requestLegacyExternalStorage 标志您的 1 个或多个应用程序包或 APK。在运行 Android 11+ 的设备上运行应用的开发人员必须使用范围存储,以便用户更好地控制其设备存储。要在 5 月 5 日之后在 Android 11 或更高版本上发布您的应用,您必须:\xc2\xa0

\n

android android-permissions android-update-sdk android-11

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

如何解决在android studio中查看预览的问题?字符串索引超出范围:-1

我看不到这个布局的预览,是唯一有这个问题的,可以构建,其他一切都好。拉图特

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".PriceActivity">

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fabAddCart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="16dp"
        android:clickable="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:srcCompat="@drawable/ic_baseline_add_shopping_cart_24" />

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            android:orientation="horizontal">

            <EditText
                android:id="@+id/editCode"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:autofillHints=""
                android:ems="10"
                android:hint="Code"
                android:inputType="number|text" />

            <ImageButton
                android:id="@+id/imgbScan"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:adjustViewBounds="true"
                android:background="@drawable/btn_primary"
                android:cropToPadding="true"
                android:padding="8dp"
                android:scaleType="fitCenter"
                android:tint="#fff"
                app:srcCompat="@drawable/ic_baseline_qr_code_scanner_24" />

        </LinearLayout>

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:visibility="gone"
            tools:srcCompat="@tools:sample/backgrounds/scenic" />

        <TextView
            android:id="@+id/txtPrice"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:textColor="#2E7D32"
            android:textSize="24sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txtName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

java android android-layout

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

startActivityForResult() 已弃用,请使用 registerForActivityResult()

我目前正在通过MeiCode提供的课程学习android开发。到目前为止,这门课程非常好,我真的很明白。然而,我已经到了课程有点过时的地步。我遵循了一个教程,其中他展示了如何请求相机权限,然后使用相机拍摄照片。但是,当我输入代码通过意图和 startActivityForResult 方法打开相机时,Android Studio 通知我它已被弃用,我应该使用 registerForActivityResult。如果不是因为我是新手并且该方法的文档在我看来并不完全适合新手,那么这并不是什么大问题。我找不到任何介绍 Java 中该方法的视频(所有视频都展示了如何在 Kotlin 中使用它)。因此,我在这里询问是否有人可以向我推荐一个易于遵循的指南或视频,或者对如何使用该方法来实现我的目的进行 ELI5 解释。这是我到目前为止编写的代码:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final int CAMERA_PERMISSION_CODE = 101;
    private static final int CAMERA_INTENT_RESULT_CODE = 102;

    private Button button;
    private ImageView image;
    private RelativeLayout parent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);
        image = …
Run Code Online (Sandbox Code Playgroud)

java android mobile-development

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

当用户删除通知 Media3 时停止媒体会话服务

我正处于将应用程序从 ExoPlayer 迁移到 jetpack Media3 的阶段,MediaSessionService一旦用户删除通知,我想停止我的应用程序,但在 MediaNotification.Provider用户删除通知时我们无法捕获事件,我们所拥有的就是setDeleteIntent这里我想停止通知一些我发现的解决方案,例如编写一个BroadcastReciever并在onRecieve()方法中执行此操作,但它在工程上寻找我。有没有人有办法解决吗?

提前致谢

service android android-notifications exoplayer android-media3

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