2011-08-09 77 views
0

我试图创建一个自定义的NumberPicker,它适用于大多数情况。唯一的问题是动态创建的布局。布局由LinearLayout(动态)和屏幕方向问题

  • 两个按钮(“+”在顶部和“ - ”在肖像模式底部)
  • 一个编辑

在构造(“NumberPicker延伸的LinearLayout” )通过使用addView()将三个组件添加到布局中。

如果在横向模式下查看此布局,我希望按钮“+”和“ - ”不要位于顶部和底部,而是位于右侧和左侧,因为否则的话, NumberPicker太大。

通过使用onConfigurationChanged事件,我检查用户是否更改了屏幕方向并将LinearLayout的方向设置为水平和垂直。问题在于“+” - 和“ - ” - 按钮位置错误。它应该是这样的(例如在风景中):

“ - ”|编辑| “+”

但它看起来是这样的:

“+” |编辑| “ - ”

我该如何解决这个问题?我想按正确的顺序按钮。我可以通过使用XML来解决问题吗?

谢谢。

回答

0

虽然可能有办法在没有XML的情况下解决您的问题,但我认为使用它们并不是一个坏主意(例如,使用getLayoutInflater().inflate(),它会返回一个视图,您可以将其投射到NumberPicker中)。

如果您手动处理配置更改(在您的XML文件中使用configurationChanges="keyboardHidden|orientation"),则需要使用上面的代码重新检索XML文件。否则,该活动将在旋转时被销毁,并自动检索适当的资源。如果您将肖像XML文件放在layout文件夹中,而另一个文件放在layout-land中,则应该全部解决。

+0

它适用于XML和LayoutInflater。谢谢! – Dekar

0

你可以有两种不同的布局xmls,一种是肖像,一种是风景。对于横向模式,如果您使用的是水平线性布局方向,则可以在加号按钮之前放置减号按钮

+0

谢谢你的回答。但是,如何将XML文件“加载”到扩展LinearLayout的类NumberPicker中? – Dekar

+0

http://www.ctctlabs.com/index.php/blog/detail/android_dont_overlook_viewswitcher/您可以使用视图切换器在视图之间切换 –