我制作了自定义组件,只是将几个TextView放在一起.现在我希望能够直接从代码启动我的自定义控件,为每个电视独立传递文本大小
我的属性定义:
<resources>
<declare-styleable name="BasicGauge">
<attr name="valueTextSize" format="dimension" />
<attr name="titleTextSize" format="dimension" />
<attr name="unitsTextSize" format="dimension" />
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)
组件的示例初始化:
<pl.com.digita.BikeComputerUi.customviews.BasicGauge
android:id="@+id/basicGauge1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="10dp"
valueTextSize="40sp">
</pl.com.digita.BikeComputerUi.customviews.BasicGauge>
Run Code Online (Sandbox Code Playgroud)
我如何尝试在组件的构造函数中读取这些属性:
final int N = typedArray.getIndexCount();
for (int i = 0; i < N; i++) {
int attribute = typedArray.getIndex(i);
switch (attribute) {
case R.styleable.BasicGauge_valueTextSize:
valueTextSize = typedArray.getString(attribute);
break;
case R.styleable.BasicGauge_titleTextSize:
titleTextSize = typedArray.getString(attribute);
break;
case R.styleable.BasicGauge_unitsTextSize:
unitsTextSize = typedArray.getString(attribute);
break;
}
typedArray.recycle();
}
Run Code Online (Sandbox Code Playgroud)
问题: 创建后,我的所有值仍为空.40sp正是我想要的值.
我使用复数来编译Android应用程序的数量字符串.我完全按照教程中的内容进行操作:
res.getQuantityString(
R.plurals.number_of_comments, commentsCount, commentsCount);
Run Code Online (Sandbox Code Playgroud)
这是复数的定义:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="number_of_comments">
<item quantity="zero">No comments</item>
<item quantity="one">One comment</item>
<item quantity="other">%d comments</item>
</plurals>
</resources>
Run Code Online (Sandbox Code Playgroud)
有趣的是,输出字符串与我所定义的一样奇怪:
commentsCount = 0 => "0 comments"
commentsCount = 1 => "One comment"
commentsCount = 2 => "2 comments"
Run Code Online (Sandbox Code Playgroud)
我想这是因为文档说明When the language requires special treatment of the number 0 (as in Arabic).了zero数量.有没有办法强迫我的定义?
我看了这个地方发现了如何在Java类访问整数资源,但对另一资源没有文档.
这是res/values/integers.xml中的Resources
<resources>
<integer name="input_field_padding" >5</integer>
</resources>
Run Code Online (Sandbox Code Playgroud)
试图访问EditText中的input_field_padding.
<EditText
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@integer/input_field_padding" />
Run Code Online (Sandbox Code Playgroud)
但我得到以下例外
java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x10
Run Code Online (Sandbox Code Playgroud)
是否有可能在另一个资源文件中访问它或我错过了什么?
直到最近我才使用Eclipse,在Eclipse中我只是创建了一个文件夹/ res/layout-landscape并在其中放置了备用的横向布局.
但是,它似乎在Android Studio 1.1.0中,我无法这样做.如何为备用横向布局创建文件夹?
我找到了一个未使用的字符串资源,如:
<string name="obsoletestring">my name is null!</string>
Run Code Online (Sandbox Code Playgroud)
然而,它是在几十文件,不同的语言,在不同的strings.xml文件中values,values-af,values-be,等文件夹.
我一定错过了一些不知道在Android Studio中做任何事情的事情,除了一个接一个地手动修改它.
tl; dr如何为所有配置删除未使用的字符串资源?
我刚遇到一个我不知道如何解决的问题.它看起来很傻但我找不到解决方法.
我在android中有一个带有几个EditText的表单,当你提交表单时,它检查那些EditText,如果他们有错误的数据,我将EditText更改为红色边框(应用9patch图像).
myEditText.setBackgroundResource(R.drawable.edittext_red);
Run Code Online (Sandbox Code Playgroud)
问题是,我想在用户更改EditText时恢复android的默认样式,但我不知道该怎么做.如果我做:
myEditText.setBackgroundResource(0);
Run Code Online (Sandbox Code Playgroud)
它会删除所有内容,而这不是我想要的.
谢谢!
android nine-patch android-edittext android-resources android-drawable
可能重复:
Android XML百分比符号
你好伙伴我在文件xml中有一个数组:
<string-array name="type_data_graph">
<item>Veichle speed (Km/h)</item>
<item>Engine Rpm (rpm)</item>
<item>Barometric pressure (kPa absolute)</item>
<item>Fuel pressure (kPa)</item>
<item>Fuel Rail pressure of manifold vacuum (kPa)</item>
<item>Fuel Rail pressure diesel/gasoline (kPa)</item>
<item>MAF air flow rate (grams/sec)</item>
<item>Intake MAP (kPa)</item>
<item>Engine % torque (%) </item>
......
</string-array>
Run Code Online (Sandbox Code Playgroud)
当commpile我得到错误
<item>Engine % torque (%) </item>
Run Code Online (Sandbox Code Playgroud)
错误是
说明资源路径位置类型错误:以非位置格式指定的多个替换; 你的意思是添加formatted ="false"属性?arrays.xml/DashboardDroid/res/values line 43 Android AAPT问题
说明资源路径位置类型错误:找到标签所在的array.xml/DashboardDroid/res/values line 43 Android AAPT问题是什么意思??? 我关闭所有标签
我正在尝试将webview的背景设置为Android中的可绘制图像资源.
从sdk看起来这样的东西可以工作,但事实并非如此.
WebView web = (WebView) findViewById(R.id.webView);
web.setBackgroundResource(R.drawable.backgroundmain);
web.loadData(profile, "text/html", "UTF-8");
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个在大多数设备上运行完美的应用程序.但是,每当我尝试在API <21的设备上运行我的应用程序时,我都会遇到FATAL异常.
这是日志:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aceinteract.sleak/com.aceinteract.sleak.activity.LoginRegisterActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class EditText
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
at android.app.ActivityThread.access$700(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5365)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class EditText
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:846)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
at …Run Code Online (Sandbox Code Playgroud) xml android android-resources android-drawable android-vectordrawable
我正在尝试将配置(例如URL/etc)放入资源文件夹中以供实用程序类使用.但是,我不想从各地的活动中传递Context.我希望能够通过路径名访问资源(似乎资产/是为此用途设计的),而不使用上下文来访问资源.
在这种特殊情况下,我希望单例在实例化时在配置中使用某些东西.在实例化期间,除了那一次之外,它不需要任何资源.因此,每次调用getInstance()时都必须传入一个Context,这将是一个完全的浪费.
此外,这特定于App的配置,不应存储在共享系统文件或类似的任何内容中.