android eclipse 在布局中使用字符串资源作为文本大小

标签 android eclipse resources text-size

我希望能够在资源中存储字体大小 (18sp),以便我的很多布局都可以使用,这样我就可以在将来需要时轻松更改大小。我在字符串资源文件中有一个字符串,其值为“18sp”,我可以通过将文本大小设置为“@strings/string_name”在布局编辑器中调用它。那时一切都很好,文本被更改为正确的字体。问题是一旦我尝试在我得到的实际设备上测试它:

04-13 12:01:01.210: E/AndroidRuntime(17114): Caused by: android.view.InflateException:    Binary XML file line #50: Error inflating class <unknown>


04-13 12:01:01.210: E/AndroidRuntime(17114):    at 

android.view.LayoutInflater.createView(LayoutInflater.java:606)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.app.Activity.setContentView(Activity.java:1835)
04-13 12:01:01.210: E/AndroidRuntime(17114):    
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.app.Activity.performCreate(Activity.java:4465)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
04-13 12:01:01.210: E/AndroidRuntime(17114):    ... 11 more
04-13 12:01:01.210: E/AndroidRuntime(17114): Caused by: java.lang.reflect.InvocationTargetException
04-13 12:01:01.210: E/AndroidRuntime(17114):    at java.lang.reflect.Constructor.constructNative(Native Method)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.view.LayoutInflater.createView(LayoutInflater.java:586)
04-13 12:01:01.210: E/AndroidRuntime(17114):    ... 29 more
04-13 12:01:01.210: E/AndroidRuntime(17114): Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x3
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.widget.TextView.<init>(TextView.java:786)
04-13 12:01:01.210: E/AndroidRuntime(17114):    at android.widget.TextView.<init>(TextView.java:442)

这是因为我使用字符串资源作为文本大小,还是其他一些潜在问题?如果是因为我使用的是字符串资源,是否有不同/更合适的方法来获得我可以调用的全局文本大小,以便我可以通过修改 1 个值来更改所有内容?

另请注意:在我尝试使用字符串资源作为文本大小之前,我的应用程序运行良好,因此我相对确定它不会是导致错误的无关内容。

谢谢!

最佳答案

在您的 res 目录中创建一个 dimens.xml 文件,其内容类似于:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="some_text_size">18dp</dimen>
</resources>

然后不要像@string/blah 那样引用它,而是使用@dimen/blah。

关于android eclipse 在布局中使用字符串资源作为文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10146057/

相关文章:

java - Android SQLiteOpenHelper : Why onCreate() method is not called?

java - 我想在同一个 Activity 中停止后重新启动相机源

android - 错误 : '__NDK_FPABI__' does not name a type. 版本 2

eclipse - 无法使用Java 1.8在Eclipse中构建Grails应用

java - 如何让java使用最新版本的文件

java - Prolog 和 Java 与 Eclipse (arch Linux)

java - 资源警告java

android - phonegap SMS 插件中的无效操作错误

java - 如何在 Java (Intellij) 中访问资源文件?

java - 从jar中获取资源