标签: android-resources

如何从java代码中读取自定义维度属性

我制作了自定义组件,只是将几个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 android-layout android-resources

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

零数量忽略多个定义

我使用复数来编译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数量.有没有办法强迫我的定义?

android plural android-xml android-resources

32
推荐指数
1
解决办法
8104
查看次数

访问xml中的整数资源

我看了这个地方发现了如何在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)

是否有可能在另一个资源文件中访问它或我错过了什么?

android android-layout android-resources

31
推荐指数
2
解决办法
3万
查看次数

Android Studio:创建横向布局

直到最近我才使用Eclipse,在Eclipse中我只是创建了一个文件夹/ res/layout-landscape并在其中放置了备用的横向布局.

但是,它似乎在Android Studio 1.1.0中,我无法这样做.如何为备用横向布局创建文件夹?

layout android android-resources android-studio

31
推荐指数
3
解决办法
7万
查看次数

如何删除Android Studio中所有配置的未使用的字符串资源?

我找到了一个未使用的字符串资源,如:

<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 android-resources android-studio

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

如果我应用背景,如何在EditText上返回默认样式?

我刚遇到一个我不知道如何解决的问题.它看起来很傻但我找不到解决方法.

我在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

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

xml文件中的字符串数组中的问题:以非位置格式指定的多个替换和找到的标记</ item>其中</ string-array>

可能重复:
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问题是什么意思??? 我关闭所有标签

android android-resources

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

将webview背景图像设置为Android中的资源图形

我正在尝试将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)

有任何想法吗?

android android-ui android-webview android-resources

29
推荐指数
2
解决办法
3万
查看次数

二进制XML文件行#1:无效的可绘制标记向量

我有一个在大多数设备上运行完美的应用程序.但是,每当我尝试在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

28
推荐指数
3
解决办法
8301
查看次数

在没有上下文的情况下访问资源

我正在尝试将配置(例如URL/etc)放入资源文件夹中以供实用程序类使用.但是,我不想从各地的活动中传递Context.我希望能够通过路径名访问资源(似乎资产/是为此用途设计的),而不使用上下文来访问资源.

在这种特殊情况下,我希望单例在实例化时在配置中使用某些东西.在实例化期间,除了那一次之外,它不需要任何资源.因此,每次调用getInstance()时都必须传入一个Context,这将是一个完全的浪费.

此外,这特定于App的配置,不应存储在共享系统文件或类似的任何内容中.

java android android-context android-resources

27
推荐指数
2
解决办法
3万
查看次数