我试图创建一个自定义的NumberPicker,它可以在大多数情况下很好地工作。唯一的问题是动态创建的布局。布局由
组成在构造函数(“NumberPicker extends LinearLayout”)中,我使用addView()添加三个组件到布局。
如果在横向模式下查看此布局,我希望按钮“+”和“ - ”不在顶部和底部,而是在右侧和左侧,因为否则NumberPicker的大小太大了。
通过使用onConfigurationChanged事件,我检查用户是否更改了屏幕方向并将LinearLayout的方向设置为水平和垂直。问题是“+” - 和“ - ” - 按钮位于错误的位置。它应该是这样的(例如在风景中):
“ - ”|编辑| “+”
但它看起来像这样:
“+”|编辑| “ - ”
我该如何解决这个问题?我想按顺序排列按钮。我可以使用XML来解决问题吗?
谢谢。
答案 0 :(得分:0)
你可以有两个不同的布局xmls,一个用于肖像,一个用于横向。对于横向,如果使用水平线性布局方向,则可以在加号按钮前面放置减号按钮
答案 1 :(得分:0)
虽然可能有一种方法可以在没有XML的情况下解决您的问题,但我认为使用它们并不是一个坏主意(例如,使用getLayoutInflater().inflate()
,它返回一个可以强制转换为NumberPicker的View)。
如果您手动处理配置更改(使用XML文件中的configurationChanges="keyboardHidden|orientation"
),则需要使用上面的代码段重新检索XML文件。否则,活动将在旋转时销毁,并且将自动检索适当的资源。如果您将纵向XML文件放在layout
文件夹中,而另一个放在layout-land
中,那么它应该都可以解决。