Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android eclipse在布局中使用字符串资源确定文本大小_Android_Eclipse_Resources_Text Size - Fatal编程技术网

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

android eclipse在布局中使用字符串资源确定文本大小,android,eclipse,resources,text-size,Android,Eclipse,Resources,Text Size,我希望能够在资源中存储字体大小(18sp),以便我的许多版面都可以使用,以便在将来需要时可以轻松更改大小。我在字符串资源文件中有一个字符串,值为“18sp”,我可以通过将文本大小设置为“@strings/string_name”在布局编辑器中调用它。此时一切正常,文本更改为正确的字体。问题是,一旦我尝试在实际设备上测试,我得到: 04-13 12:01:01.210: E/AndroidRuntime(17114): Caused by: android.view.InflateExceptio

我希望能够在资源中存储字体大小(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)
04-13 12:01:01.210:E/AndroidRuntime(17114):原因:android.view.InflateException:二进制XML文件行#50:膨胀类时出错
04-13 12:01:01.210:E/AndroidRuntime(17114):在
createView(LayoutInflater.java:606)
04-13 12:01:01.210:E/AndroidRuntime(17114):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.inflate(LayoutInflater.java:489)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.充气(LayoutInflater.java:352)
04-13 12:01:01.210:E/AndroidRuntime(17114):位于com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
04-13 12:01:01.210:E/AndroidRuntime(17114):位于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):在android.app.Activity.performCreate(Activity.java:4465)上
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)上
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)上
04-13 12:01:01.210:E/AndroidRuntime(17114):。。。还有11个
04-13 12:01:01.210:E/AndroidRuntime(17114):由以下原因引起:java.lang.reflect.InvocationTargetException
04-13 12:01:01.210:E/AndroidRuntime(17114):位于java.lang.reflect.Constructor.constructNative(本机方法)
04-13 12:01:01.210:E/AndroidRuntime(17114):位于java.lang.reflect.Constructor.newInstance(Constructor.java:417)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.view.LayoutInflater.createView(LayoutInflater.java:586)
04-13 12:01:01.210:E/AndroidRuntime(17114):。。。还有29个
04-13 12:01:01.210:E/AndroidRuntime(17114):原因:java.lang.UnsupportedOperationException:无法转换为维度:type=0x3
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.widget.TextView。(TextView.java:786)
04-13 12:01:01.210:E/AndroidRuntime(17114):在android.widget.TextView。(TextView.java:442)
这是因为我使用字符串资源作为文本大小,还是其他潜在问题?如果是因为我使用的是字符串资源,是否有其他/更合适的方法来设置全局文本大小,以便我可以调用它,从而通过修改1个值来更改所有内容

还需要注意的是:在我尝试使用字符串资源作为文本大小之前,我的应用程序运行得很好,因此我相对确定不会是无关的东西导致了错误


谢谢

在res目录中创建一个dimens.xml文件,其内容如下:

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

18dp

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

将其用作XML资源,并在任何需要的地方调用它

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textview_height">25dp</dimen>
    <dimen name="textview_width">150dp</dimen>
    <dimen name="ball_radius">30dp</dimen>
    <dimen name="font_size">16sp</dimen>
</resources>

谢谢答案肯定正确,但前面的海报先回答了。效果很好。谢谢!我有4个值文件夹,如值小,正常,大,xlarge。并将4 dimens.xml放入这些文件中。但不起作用!你能解释一下不工作是什么意思吗?我刚刚做了一个快速验证测试,values vs values large可以从不同的dimens.xml文件中提取不同的值。
Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);