小编and*_*per的帖子

为什么"设计时属性"不起作用?

背景

谷歌添加了很好的" 设计时属性 "(从这里找到它)仅用于UI设计师模式,所以,例如,如果你想在textView(或EditText)上显示文本(帮助你理解如何它看起来像),你可以添加:

    <EditText 
        tools:text="John Doe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

来自Google的示例:

在此输入图像描述

实际上,这应该适用于您已经可以使用的任何属性.不确定是否有任何限制,但它非常酷.

问题

现在,当我在Eclipse中执行此操作时(只是一个带有"tools:text"属性的简单textView),再加上最新的ADT和SDK(22.3.0.v201310242005-887826),它就不起作用了.它只是没有做任何事情.

这个问题

这个功能是否有可能只适用于新的IDE(android studio)?如果是这样,怎么可能呢?Google不应该将每个Android开发功能添加到ADT吗?

另外,在某些网站上它被称为"设计时布局属性",有些网站只是"设计时属性"?

eclipse android gui-designer adt designtime-attributes

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

如何使用ADB将特定应用程序移入/移出SD卡?

背景

可以使用(基于此链接)将默认安装设置为SD卡:

对于预先API14:

adb shell pm setInstallLocation 2 
Run Code Online (Sandbox Code Playgroud)

API 14及以上版本:

adb shell pm set-install-location 2 (Android 4.x)
Run Code Online (Sandbox Code Playgroud)

问题

这仅适用于新安装的应用程序(或者您只是手动遍历每个应用程序并将其设置在那里),但我想知道如何将已安装的应用程序重新安装到SD卡中(还可以重新安装到内部存储器中) ).

我试过的

我试图通过ADB读取可用的命令,并尝试运行下一个命令:

adb shell pm install -s -r -i com.example.test
Run Code Online (Sandbox Code Playgroud)

但它没有用

这个问题

假设应用程序已经安装在内部存储器(或SD卡)上,我如何使用ADB将其重新安装到SD卡(或内部)?

android adb android-sdcard

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

ProgressBar drawable如何工作?

背景

我想作一个圆形的进度条是确定的(意思是机器人:不确定="假"),所以我在网上搜索,发现罗曼盖伊的简短的回答,在这里.

所以我抓住了代码并在示例项目中使用它:

布局文件的(部分):

<ProgressBar
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:background="@color/backColor"
    android:indeterminate="false"
    android:indeterminateOnly="false"
    android:max="100"
    android:progress="33"
    android:progressDrawable="@drawable/progress" />
Run Code Online (Sandbox Code Playgroud)

绘制/ progress.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<!--    <item android:drawable="@drawable/progress_circular_background"/> -->
    <item>
        <shape  
            android:innerRadiusRatio="3.4"
            android:shape="ring"
            android:thicknessRatio="6.0" >
            <gradient
                android:endColor="#ffffffff"
                android:startColor="#ff000000"  
                android:type="sweep"
                android:useLevel="true" />

        </shape>
    </item>

    <item>
        <rotate
            android:drawable="@drawable/progress_particle"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="360" />
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

截图(不完全是当前代码):

在此输入图像描述

这个问题

它工作正常,但我不明白它是如何工作的.

进度条如何知道在drawables上究竟要改变什么,以及如何改变?

例如,它如何知道如何从右边0度而不是从其他地方获取戒指形状?

是否可以自定义它的工作方式?

android android-progressbar android-drawable

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

如何与特定好友打开 VKontakte 应用程序?

背景

为了与特定的 Facebook 好友打开 Facebook 应用程序,您可以使用以下意图:

final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("fb://profile/%s", friendId)));
Run Code Online (Sandbox Code Playgroud)

LinkedIn 也有类似的解决方案:

final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("linkedin://profile/%s",  friendId)));
Run Code Online (Sandbox Code Playgroud)

我认为下一个将适用于 Google Plus(没有测试它,但看起来很有希望):

final Intent intent =new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("https://plus.google.com/%s/posts", friendId)));
Run Code Online (Sandbox Code Playgroud)

问题

我试图找到如何使用此类意图打开 VKontakte (VK) 社交网络应用程序,但找不到它。

有这样的意图吗?如果是的话,那是什么?

android android-intent vk

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

EditText显示状态栏,或导致上面的内容移动而不是调整大小

背景

我有一个登录活动,它有一个这样的布局(垂直,从上到下):

  1. title(logo ImageView和TextView)
  2. 图像和viewPager占用屏幕的其余部分
  3. EditTexts和登录按钮显示在#2的顶部(覆盖其中的一部分),但位于屏幕的底部

我需要全屏显示此活动,隐藏状态栏,当出现软键盘时,请更改布局,以便显示上面显示的#3.

问题

似乎这些要求的组合很成问题.

我有两个主要问题:

  • 我为感测所显示的软键盘做了什么 - 虽然它在其他活动中运行良好,但似乎在这里不起作用.

  • 当软键盘出现时,它会重新显示状态栏,或者将内容移动到底部区域(#3)上方而不是调整大小,同时还将按钮隐藏在底部(#3)并仅显示EditText作为软键盘上方的第一个视图.

由于在显示/隐藏软键盘时无法真正拥有监听器,因此我必须创建一个自定义布局,告诉我其大小何时发生变化.当它的高度减小时,我假设键盘显示,反之亦然.

我试过的

  • 我尝试了多种布局变体.似乎没有帮助
  • 我已经使用这个布局作为片段的根,检查软键盘是否显示(因为它改变了它的大小):https: //stackoverflow.com/a/25895869/878126 可悲的是,它适用于所有其他除此之外的活动.
  • 我尝试了各种"windowSoftInputMode"值,包括"adjustResize"和"adjustPan"
  • 我认为问题是因为我使用透明导航栏,因此我已禁用它并且还禁用了"fitsSystemWindows"作为底部区域(#3).
  • 我试过这种方式来隐藏状态栏:

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    
    Run Code Online (Sandbox Code Playgroud)

    而这样:

    if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    } else
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
    Run Code Online (Sandbox Code Playgroud)

目前的布局

这是当前布局的简短描述:

<LayoutSizeChangedSensorFrameLayout>
 <RelativeLayout>

   #1
   <LinearLayout vertical, aligned to parent-top>
    <ImageView/>
    <TextView/>
    <CirclePageIndicator/>
   </LinearLayout>

   #2
   <ImageView aligned to parent-bottom, and below #1 />
   <ViewPager aligned to the ImageView from all sides/>

   #3
   <LinearLayout vertical, aligned to …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-softkeyboard android-statusbar

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

在使用Crashlytics SDK时,如何在发生崩溃时进行回调?

背景

我们使用Crashlytics SDK来管理应用程序崩溃并获取有关它们的所需信息.

到目前为止,SDK自动收集的信息已足够

问题

我想为每次崩溃添加更多信息,例如:可用和总堆内存,活动堆栈,......

事实是,我没有看到实现这一目标的方法.

我知道Android框架使用未处理的异常的方式非常简单(使用Thread.setDefaultUncaughtExceptionHandler),它可能是SDK的工作原理,但我找不到在哪里使用SDK本身的监听器.

我试过的

  1. 该SDK有一个监听器,但似乎这不是当前会话的,如图所示这里.函数名称为"crashlyticsDidDetectCrashDuringPreviousExecution",表示它是上一个会话的名称.之前在已弃用的方法中可以使用相同的回调.

  2. 有" 自定义日志记录 "和" 自定义键 "功能,但是当我调用它们时会发生这些功能(发生崩溃时不正确).

这个问题

有没有办法在发生崩溃时立即向Crashlytics添加额外信息?

如果是这样,怎么样?

android crashlytics

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

Android 7.1静态应用程序快捷方式创建者可以将额外内容添加到意图中吗?

这是一个简短的问题:

Android Nougat 7.1为启动器提供了一项新功能,通过显示可供选择的菜单来创建应用程序快捷方式: https://developer.android.com/about/versions/nougat/android-7.1.html https:// developer .android.com /引导/主题/ UI/shortcuts.html

从我看到的,如果你使用动态的,你可以把任何你想要的东西放进去,但是静态快捷方式(那​​些通过XML预先确定的)有额外的东西吗?含义:例如,我可以将一个字符串放在快捷方式的意图包中吗?或者我可以只选择他们每个人会有哪些行动?

我问这个是因为我没有在那里看到它.

android android-intent android-7.1-nougat android-appshortcut

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

是否可以检查给定的电话号码是否属于手机?

背景

可以使用此代码以及Google提供的PhoneNumberUtil库(此处提供)来检查给定字符串是否代表有效的电话号码:

public static boolean isValidNumber(final PhoneNumber phone) {
    if (phone == null)
        return false;
    final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
    return phoneNumberUtil.isValidNumber(phone);
}

public static boolean isValidPhoneNumber(String phone) {
    if (TextUtils.isEmpty(phone))
        return false;
    phone = phone.replaceAll("[^0-9]", "");
    final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
    PhoneNumber phoneNumber = null;
    try {
        phoneNumber = phoneNumberUtil.parse(phone, Locale.getDefault().getCountry());
    } catch (final Exception e) {
    }
    return isValidNumber(phoneNumber);
}
Run Code Online (Sandbox Code Playgroud)

问题

这只是一般性检查,但我无法确定是否可以知道电话号码是否实际上是移动设备.

我试过的

正如我在一些网站上看到的,上面的检查可能需要进行一些小的调整才能知道它是否属于移动设备,但根据我的测试,这是错误的:

    ...
    phone = phone.replaceAll("[^0-9]", "");
    if (phone.length() < …
Run Code Online (Sandbox Code Playgroud)

android phone-number libphonenumber

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

如何以编程方式使用笔画制作圆形绘图?

背景

我想要一个填充圆圈,具有一定颜色和宽度的笔划,以及内部的图像.

这可以很容易地用XML完成(这只是一个示例):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size
                android:width="120dp" android:height="120dp"/>
            <solid android:color="#ffff0000"/>
            <stroke
                android:width="3dp" android:color="#ff00ff00"/>
        </shape>
    </item>
    <item
        android:width="60dp" android:height="60dp" android:drawable="@android:drawable/btn_star"
        android:gravity="center"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题

我需要具有以上某些属性以编程方式进行更改,因此我无法使用XML文件,但这个想法仍然是相同的.

事实是,我无法找到一种简单的方法来在OvalShape drawable上绘制,就像在XML中一样.我找不到这样做的功能.

我尝试了什么

StackOverflow上有解决方案,但我找不到一个运行良好的解决方案.我发现只有一个在这里,但它的划线正在削减.

但是,我通过一种方式来解决这个问题,通过使用一个仅用于描述本身的XML:

stroke_drawable.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <stroke
        android:width="4dp" android:color="@android:color/white"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

码:

    final int strokeDrawableResId = R.drawable.stroke_drawable;
    Drawable innerDrawable = ResourcesCompat.getDrawable(getResources(), ..., null);
    final Drawable strokeDrawable = ResourcesCompat.getDrawable(getResources(), strokeDrawableResId, null);
    ShapeDrawable biggerCircle = new ShapeDrawable(new OvalShape());
    int size = ...;
    biggerCircle.setIntrinsicHeight(size);
    biggerCircle.setIntrinsicWidth(size);
    biggerCircle.getPaint().setColor(0xffff0000);
    biggerCircle.setBounds(new Rect(0, 0, size, size));
    LayerDrawable layerDrawable …
Run Code Online (Sandbox Code Playgroud)

android android-drawable layerdrawable android-shapedrawable

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

如何在Android的Kotlin上使用“ setTextColor(hexaValue)”,

背景

在Java中,我可以使用它的标准十六进制值直接更改TextView的文本颜色:

    textView.setTextColor(0xffffffff); //white
    textView.setTextColor(0x00000000); //transparent
    textView.setTextColor(0xff000000); //black
    textView.setTextColor(0xff0000ff); //blue
    //etc...
Run Code Online (Sandbox Code Playgroud)

很容易...

问题

在Kotlin上,如果我尝试编写这样的东西,则会遇到奇怪的构建错误:

错误:(15,18)使用提供的参数无法调用以下函数:public open fun setTextColor(p0:ColorStateList!):android.widget.TextView中定义的单元public open fun setTextColor(p0:Int):单位在android.widget.TextView中定义

我尝试过的

我尝试通过Internet搜索此内容,但没有看到关于十六进制值的任何特殊信息。好像在Java上一样:

https://kotlinlang.org/docs/reference/basic-types.html

然后我决定只用Java编写,然后转换为Kotlin。就颜色值而言,结果非常不可读:

    textView.setTextColor(-0x1) //white
    textView.setTextColor(0x00000000) //transparent
    textView.setTextColor(-0x1000000) //black
    textView.setTextColor(-0xffff01) //blue
Run Code Online (Sandbox Code Playgroud)

在我看来,用于Kotlin的Integer的十六进制值是带符号的,而在Java上,它会自动转换为带符号的十六进制,因此这会导致值翻转,并且需要在需要时设置减号。

我唯一能想到的仍然是这样的东西:

textView.setTextColor(Integer.parseUnsignedInt("ffff0000",16));
Run Code Online (Sandbox Code Playgroud)

但是,这有多个缺点:

  1. 它更长。
  2. 它转换一个字符串,所以效率低得多
  3. 最重要的是:它仅适用于API 26(Android O),目前在全球约1%的Android设备上处于活动状态。

问题

为什么会发生?

我该如何做才能使其在不进行字符串转换的情况下最易读,并且可以在所有Android版本上使用(在我的情况下为minSdkVersion 14)?

android textview kotlin

4
推荐指数
5
解决办法
9665
查看次数