2013-03-24 101 views
1

我正在开发一个项目,我需要动态地添加TextViewSpinner以及通过该程序。我能够从我的程序成功动态地添加这两件事。如何修复Android中Button的位置

下面是我用于此的XML布局。

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/llayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="100px" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical|center_horizontal|center" 
      android:gravity="center_vertical|center_horizontal" 
      android:text="Save" /> 

    </LinearLayout> 

</ScrollView> 

Problem Statement:- 

因此,我希望是 - 所有TextViewSpinner应该得到所示,首先然后在最后Button应该得到什么所示。

但是,当前发生了什么Save Button显示在顶部,然后所有其他TextView and Spinner得到显示。

我怎样才能确定,该按钮来自屏幕的底部。

下面是你可以找出问题的截图。我想在屏幕底部显示保存按钮。

enter image description here

回答

1

或者你也可以在代码中创建一个按钮,这样,再添加全部后添加到您的布局在纺织和像下面textviews,你必须从你的XML中删除按钮的声明:

Button button = new Button(this) ///this is a context object 

    button.setWidth(100); 
    button.setText("Save"); 


    layout.addView(button); 

您可以动态创建布局并添加按钮,使L ayout然后将此布局添加到超级布局

或者您可以做的是在res/layout/savebutton_layout中声明新的xml文件。XML

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal" 
     android:id="@+id/lLayoutBT" 

     > 

     <Button 
      android:id="@+id/saveBT" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="@string/save" /> 


    </LinearLayout> 

现在,在你的代码,你将不得不寻找包含按钮此布局,然后将此布局添加到您的主要布局(就像你将你的按钮)

例如

 LinearLayout buttonLayout =(LinearLayout) view.findViewById(R.id.lLayoutBT); 
    views.add(buttonLayout); 
+0

我试过这个,但在这种情况下。按钮的大小只是屏幕的宽度。我想让Button完全显示,因为它在问题中的图像中显示。任何想法如何使这项工作? – ferhan 2013-03-24 23:52:24

+0

你需要一个布局。我编辑了我的答案并添加了示例代码以将按钮添加到布局。 – 2013-03-25 09:35:56

0

如果您改变LinearLayoutRelativeLayout然后添加这个您Button

<Button 
... 
android:layout_alignParentBottom="true"/> 

它应该给你想要的东西。我尽可能多地使用RelativeLayout而不是LinearLayout,因为在大多数情况下,它更加灵活和高效。他们采取习惯于多一点的时间,但绝对值得花时间去理解和执行

编辑

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/llayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="100px" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true"/> 
     android:text="Save" /> 

</RelativeLayout> 

</ScrollView> 

类似的东西应该工作。你可能需要玩一点,才能得到你想要的东西,但这应该会让你在那里。

+0

感谢您的帮助。你能提供我在我的代码中使用的XML吗?正如我相信我在我的代码中搞砸了一些东西。谢谢您的帮助。 – ferhan 2013-03-24 23:42:15

+0

编辑我的答案 – codeMagic 2013-03-24 23:55:19

0

如果你使用(而不是LinearLayout)一RelativeLayout你有一个像访问属性:

<Button 
android:id="@+id/button1" 
android:layout_alignParentBottom="true" 
android:layout_alignParentLeft="true" 
... 
</Button>