是否可以将参数传递给android中的包含布局?我想要做的是在横向模式下在水平LinearLayout中显示一组按钮,并使用相同的包括将LinearLayout的方向更改为“垂直”。
<include layout="buttons.xml" orientation="horizontal"/>
在用于纵向模式的布局XML中,我想这样做:
<include layout="buttons.xml" orientation="vertical"/>
在buttons.xml中我会:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doSomething"
android:text="foo" >
</Button>
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doSomethingElse"
android:text="bar" >
</Button>
如果我正确解释文档,则只能覆盖include的布局*属性。
在没有复制布局xml的情况下,还有其他方法/解决方法吗? 感谢您的投入!
答案 0 :(得分:4)
Android通过为不同的配置提供不同的文件夹来解决这个问题。
来自文档:
另一个例子是,这是一个项目,其中包含横向方向的替代布局:
MyProject的/
RES / 布局/
main.xml layout-land/ main.xml
默认情况下,layout / main.xml文件用于纵向方向。
我相信你应该这样做,因为这是文档中推荐的方式,但如果你决定control orientation changes,你可以改变你的方向。
并使用它来更改布局方向:
LinearLayout layout = (get layout from view);
layout.setOrientation(LinearLayout.VERTICAL);
或
layout.setOrientation(LinearLayout.HORIZONTAL);
答案 1 :(得分:2)
这有点晚了,但这是另一种不分割布局的可能性:您还可以在xml文件中设置LinearLayout的方向值。由于方向值为整数(0:水平,1:垂直),您也可以使用这种方式:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="@integer/orientation" >
然后在xml-files中设置/覆盖此方向值:
<强> dimens.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="orientation">1</integer> <!-- vertical //-->
</resources>
<强>梦诗-land.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="orientation">0</integer> <!-- horizontal //-->
</resources>
答案 2 :(得分:0)
好吧我最后做的是将我的布局分成三部分:
button_container.xml只包含一个LinearLayout和另外两个包含
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="**horizontal**" >
<include layout="@layout/button_top_row" />
<include layout="@layout/button_bottom_row" />
</LinearLayout>
-button_row_bottom包含应位于底行的按钮(同样在手持端口视图中)
button_container.xml存在两个版本,一个是水平方向(对于平板电脑,面向landsacpe的移动手持设备)和一个方向垂直的版本(对于手持端口)。 所以我设法以某种方式最小化代码重叠,即使它不像我希望的那样容易。
欢迎任何其他提示。 再见, 马库斯