如何以表格形式动态设置按钮

时间:2015-12-08 11:57:42

标签: android android-layout layout

我正在为我的活动制作布局并且感到困惑,我正在考虑制作灵活的布局,我的视图根据屏幕获得宽度和高度。请阅读以下案例

我想要的是什么: 这对我来说是最棘手和最难的部分。

  1. 我需要在屏幕上放置37个按钮,以便每行     获取3按钮,然后切换到新行。然而,最后一行获得单个按钮或两个按钮。那么在3的情况下 每行中的按钮只产生最后一行中的单个按钮但是那样 好
  2. 每行中的每个按钮应具有不同的ID,具有不同的ID 背景图片和打开不同的活动与不同 意图额外。
  3. 行中的按钮必须具有相同的大小,以使其看起来很好。
  4. 所以这三点让我很难过。另外,这一点的第二点更为重要。

    请告诉我如何实现这一点我已阅读有关网格布局,网格视图,列表视图,表格布局以及我多次使用它们的信息。但我不知道如何将它们用于此特定目的。

    注意:行中的按钮应根据屏幕获得相同的宽度和高度,并且布局应适合所有设备,因此我们应避免使用硬编码值。

3 个答案:

答案 0 :(得分:1)

  1. 只需使用网格视图即可。将Max列设置为3和

  2. 使用自定义适配器扩展Base适配器来设置背景并在项目单击侦听器上返回不同的ID。

  3. 使用屏幕尺寸动态设置充气项目视图的布局参数。

答案 1 :(得分:0)

我认为您应该看到这些链接,link 1link2。 gridview是最好的选择,因为这些布局调整大小,您可以轻松地在它们的适配器中处理它们。

答案 2 :(得分:0)

使用线性布局代替..使用嵌套的概念。就像

<LinearLayout>

   <LinearLayout>
     .
     .
   And So on..
     .
     .
     .
   </LinearLayout>

</LinearLayout>

例如

----Outer (Horizontal) layout-----
|                                |
|  ---Inner (Vertical) layout-   |
|  |       [Textview]        |   |
|  |       [Button]          |   |
|  |       [Button]          |   |
|  |       [Button]          |   |
|  ---------------------------   |
----------------------------------

也可以尝试以下示例

<LinearLayout android:layout_width="match_parent"
 android:layout_weight="1" 
 android:layout_height="wrap_content"
 android:orientation="vertical">
 <LinearLayout android:layout_height="wrap_content"
 android:layout_width="match_parent">
 <TextView android:text="One,One" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="One,Two" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" 
 android:layout_weight="1" />
 <TextView android:text="One,Three" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="One,Four" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 </LinearLayout>
 <LinearLayout android:layout_height="wrap_content"
 android:layout_width="match_parent">
 <TextView android:text="Two,One" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="Two,Two" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" 
 android:layout_weight="1" />
 <TextView android:text="Two,Three" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="Two,Four" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 </LinearLayout>
 <LinearLayout android:layout_height="wrap_content"
 android:layout_width="match_parent">
 <TextView android:text="Three,One" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="Three,Two" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" 
 android:layout_weight="1" />
 <TextView android:text="Three,Three" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="Three,Four" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 </LinearLayout>
 <LinearLayout android:layout_height="wrap_content"
 android:layout_width="match_parent">
 <TextView android:text="Four,One" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="Four,Two" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" 
 android:layout_weight="1" />
 <TextView android:text="Four,Three" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 <TextView android:text="Four,Four" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" />
 </LinearLayout>
</LinearLayout>

<强>输出

enter image description here

参考链接:    Nested Linear Layout,     Nested Example

更新1 正如你所说,37个按钮必须在应用程序上实现不同的id,intent extras等。我认为这很简单。设置每个按钮具有不同的id并为按钮写一个onClickListener。使用开关/如果情况t \ o区分每个按钮。

示例:

public void buttonOnClick(View view)
{
 switch(view.getId())
 {
  case R.id.button1:
  // Code for button 1 click
  break;

  case R.id.button2:
  // Code for button 2 click
  break;

  case R.id.button3:
  // Code for button 3 click
  break;
 }
}

请参阅此链接以获取更多信息:

OnClickevent for buttons

由于