LinearLayout(动态)和屏幕方向问题

时间:2011-08-09 19:55:41

标签: android xml layout screen orientation

我试图创建一个自定义的NumberPicker,它可以在大多数情况下很好地工作。唯一的问题是动态创建的布局。布局由

组成
  • 两个按钮(顶部为“+”,纵向模式为“ - ”)
  • 一次编辑

在构造函数(“NumberPicker extends LinearLayout”)中,我使用addView()添加三个组件到布局。

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

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

“ - ”|编辑| “+”

但它看起来像这样:

“+”|编辑| “ - ”

我该如何解决这个问题?我想按顺序排列按钮。我可以使用XML来解决问题吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

你可以有两个不同的布局xmls,一个用于肖像,一个用于横向。对于横向,如果使用水平线性布局方向,则可以在加号按钮前面放置减号按钮

答案 1 :(得分:0)

虽然可能有一种方法可以在没有XML的情况下解决您的问题,但我认为使用它们并不是一个坏主意(例如,使用getLayoutInflater().inflate(),它返回一个可以强制转换为NumberPicker的View)。

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