我的应用程序上有一些 TextView,我不知道为什么,但是 android:gravity 属性没有将文本内容居中放置在运行 API 18+ (4.3+) 的设备上).
这是我在自定义 TextView 上使用的代码,这是 RelativeLayout 的子项:
<com.package.custom.CustomTextFont
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/seekbar"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/seekbar"
android:layout_marginLeft="@dimen/margin_tiny_double"
android:layout_toLeftOf="@+id/seekbar"
android:gravity="center_vertical|left"
android:paddingRight="@dimen/margin_tiny"
android:text="@string/text1"
android:textColor="@color/black"
android:textSize="@dimen/size_text_normal" />
此代码应取此 TextView 的边缘并将其与顶部和底部对齐,并将其放在 SeekBar 的左侧,这是可行的,但是TextView 变大了,所以使用 android:gravity 我将文本居中并从它自己离开。它有效,但我不知道为什么,在运行 android 4.3 和 4.4 的设备上,文本不居中于中心|左侧。这个问题可以在真实设备上重现,也可以在 Eclipse 的布局预览(图形布局)上重现。
我缺少对 API 18+ 或 android:gravity 所做的任何更改吗?
PS:我在项目和 AndroidManifest.xml 上以 API 19 为目标
PS2:我的 TextView 是自定义的,只是为了设置一个外部 font.tff
这是它在 API 17 上的样子-
这是它在 API 18+ 上的样子
提前致谢!
=更新=
在我的 list 上,我将 android:targetSdkVersion 更改为 17 而不是 19 并且问题消失了,但这是一个“技巧”,而不是解决方案,我能做什么,因为它可能是API 的问题?是的,我拥有最新版本的 API 18 和 19(今天,2014 年 1 月 30 日)。
最佳答案
这似乎是 API 18+ 中的一个已知问题:
https://code.google.com/p/android/issues/detail?id=59368 https://code.google.com/p/android/issues/detail?id=59700
问题似乎发生在 TextView 是可滚动容器(例如 ListView)的一部分时,由于某种原因使 View 忽略垂直引力(一些消息来源表明这与 TextView 是 RelativeLayout 的子级有关,尽管根据我的经验,即使不涉及此类布局,也可能发生这种情况。
一种可能的解决方法(尽管不是特别优雅的解决方法)是将 TextView 包装在 LinearLayout 中。然后,您可以在 TextView 上使用“layout_gravity”使其在 LinearLayout 中居中,而不是依赖“gravity”(只需确保 wrap_content 以便文本本身正确居中)。
例如,在您的示例中:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/seekbar"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/seekbar"
android:layout_toLeftOf="@+id/seekbar"
android:layout_marginLeft="@dimen/margin_tiny_double" >
<com.package.custom.CustomTextFont
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="left"
android:paddingRight="@dimen/margin_tiny"
android:text="@string/text1"
android:textColor="@color/black"
android:textSize="@dimen/size_text_normal" />
</LinearLayout>
此方法的缺点是会在 View 层次结构中添加一个不必要的级别,但它目前似乎是解决此问题的唯一方法(除了恢复到较早的 API 级别)。
另见类似问题: Android sdk 18 TextView gravity doesn't work vertically
关于java - android:gravity 在 API 18+ 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21444425/
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我看到这个错误:translationmissing:da.datetime.distance_in_words.about_x_hours我的语言环境文件:http://pastie.org/2944890我的看法:我已将其添加到我的application.rb中:config.i18n.load_path+=Dir[Rails.root.join('my','locales','*.{rb,yml}').to_s]config.i18n.default_locale=:da如果我删除I18配置,帮助程序会处理英语。更新:我在config/enviorments/devolpment
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht