谷歌添加了很好的" 设计时属性 "(从这里找到它)仅用于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吗?
另外,在某些网站上它被称为"设计时布局属性",有些网站只是"设计时属性"?
可以使用(基于此链接)将默认安装设置为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卡(或内部)?
我想作一个圆形的进度条是确定的(意思是机器人:不确定="假"),所以我在网上搜索,发现罗曼盖伊的简短的回答,在这里.
所以我抓住了代码并在示例项目中使用它:
布局文件的(部分):
<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度而不是从其他地方获取戒指形状?
是否可以自定义它的工作方式?
为了与特定的 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) 社交网络应用程序,但找不到它。
有这样的意图吗?如果是的话,那是什么?
我有一个登录活动,它有一个这样的布局(垂直,从上到下):
我需要全屏显示此活动,隐藏状态栏,当出现软键盘时,请更改布局,以便显示上面显示的#3.
似乎这些要求的组合很成问题.
我有两个主要问题:
我为感测所显示的软键盘做了什么 - 虽然它在其他活动中运行良好,但似乎在这里不起作用.
当软键盘出现时,它会重新显示状态栏,或者将内容移动到底部区域(#3)上方而不是调整大小,同时还将按钮隐藏在底部(#3)并仅显示EditText作为软键盘上方的第一个视图.
由于在显示/隐藏软键盘时无法真正拥有监听器,因此我必须创建一个自定义布局,告诉我其大小何时发生变化.当它的高度减小时,我假设键盘显示,反之亦然.
我试过这种方式来隐藏状态栏:
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
我们使用Crashlytics SDK来管理应用程序崩溃并获取有关它们的所需信息.
到目前为止,SDK自动收集的信息已足够
我想为每次崩溃添加更多信息,例如:可用和总堆内存,活动堆栈,......
事实是,我没有看到实现这一目标的方法.
我知道Android框架使用未处理的异常的方式非常简单(使用Thread.setDefaultUncaughtExceptionHandler),它可能是SDK的工作原理,但我找不到在哪里使用SDK本身的监听器.
该SDK有一个监听器,但似乎这不是当前会话的,如图所示这里.函数名称为"crashlyticsDidDetectCrashDuringPreviousExecution",表示它是上一个会话的名称.之前在已弃用的方法中可以使用相同的回调.
有没有办法在发生崩溃时立即向Crashlytics添加额外信息?
如果是这样,怎么样?
这是一个简短的问题:
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
可以使用此代码以及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) 我想要一个填充圆圈,具有一定颜色和宽度的笔划,以及内部的图像.
这可以很容易地用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
在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)
但是,这有多个缺点:
为什么会发生?
我该如何做才能使其在不进行字符串转换的情况下最易读,并且可以在所有Android版本上使用(在我的情况下为minSdkVersion 14)?
android ×10
adb ×1
adt ×1
crashlytics ×1
eclipse ×1
gui-designer ×1
kotlin ×1
phone-number ×1
textview ×1
vk ×1