Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用不同高度的按钮布局按钮栏?_Android_Android Layout - Fatal编程技术网

Android 如何使用不同高度的按钮布局按钮栏?

Android 如何使用不同高度的按钮布局按钮栏?,android,android-layout,Android,Android Layout,我如何使用不同形状和高度的按钮来实现一个按钮栏?举个例子(请原谅我在这个快速模型上的拙劣绘图技巧): 示例栏有3个按钮,中间按钮(3)的形状和高度与其他2个按钮(1,2)不同。按钮栏将是一个包含并合并到其他视图中的视图,以便看起来浮动在父视图的顶部 我正在考虑将按钮1和2实现为一个布局,然后将按钮3实现为另一个布局,然后与前两个按钮的布局合并。更好地使用不同按钮样式的表格布局或按钮“3”的相对布局。更好地使用不同按钮样式的表格布局或按钮“3”的相对布局正如我以前的同事所说,你需要某种布局或容器

我如何使用不同形状和高度的按钮来实现一个按钮栏?举个例子(请原谅我在这个快速模型上的拙劣绘图技巧):

示例栏有3个按钮,中间按钮(3)的形状和高度与其他2个按钮(1,2)不同。按钮栏将是一个包含并合并到其他视图中的视图,以便看起来浮动在父视图的顶部


我正在考虑将按钮1和2实现为一个布局,然后将按钮3实现为另一个布局,然后与前两个按钮的布局合并。

更好地使用不同按钮样式的表格布局或按钮“3”的相对布局。

更好地使用不同按钮样式的表格布局或按钮“3”的相对布局

正如我以前的同事所说,你需要某种布局或容器,可以有背景(如果你希望按钮3位于其上方),然后使用相对布局来混合这两个按钮。除了复杂之外,这种布局的缺点是,你无法与其他两个按钮联系起来,因为它们位于不同的布局中

更优雅的解决方案可能是有一个特殊的背景画,可以:

  • 有一个方法setCurrentHeight(),该方法将指定实际可视部分应具有的高度,其余部分将用透明颜色填充
  • 重写它自己的绘图,以便在绘图之前,它将有一个名为callback的回调,您可以将自己注册到
  • 然后,您可以在活动中注册回调,以获取#3按钮的当前位置,并相应地设置高度,这样您仍然可以使用一个具有特殊可绘制背景的布局


    定制的LevelDrawable可能会起作用。

    正如我以前的同事所说,您需要某种布局或容器,可以有背景(如果您希望按钮3位于其上方)然后使用相对布局来混合这两个按钮。除了复杂之外,这种方法的缺点是,您无法与其他两个按钮关联,因为它们位于不同的布局中

    更优雅的解决方案可能是有一个特殊的背景画,可以:

  • 有一个方法setCurrentHeight(),该方法将指定实际可视部分应具有的高度,其余部分将用透明颜色填充
  • 重写它自己的绘图,以便在绘图之前,它将有一个名为callback的回调,您可以将自己注册到
  • 然后,您可以在活动中注册回调,以获取#3按钮的当前位置,并相应地设置高度,这样您仍然可以使用一个具有特殊可绘制背景的布局


    一个定制的LevelDrawable可能就可以做到这一点。

    我将按如下方式布局此栏:

    • RelativeLayout作为其余内容的容器,高度设置为wrap_content,alignparentbottom=true
    • 酒吧的图像视图
    • 2个带透明背景的按钮(按钮1和2)
    • 按钮3是以梯形自定义图像为背景的自定义按钮
    因此,您将有一个类似于以下内容的布局:

    <RelativeLayout
       ...>
    
       <ImageView
          .../>
    
       <Button
          ... Button 1 />
    
       <Button
          ... Button 2 />
    
       <Button
          ... Button 3 />
    
    </RelativeLayout>
    

    我将按如下方式布局此栏:

    • RelativeLayout作为其余内容的容器,高度设置为wrap_content,alignparentbottom=true
    • 酒吧的图像视图
    • 2个带透明背景的按钮(按钮1和2)
    • 按钮3是以梯形自定义图像为背景的自定义按钮
    因此,您将有一个类似于以下内容的布局:

    <RelativeLayout
       ...>
    
       <ImageView
          .../>
    
       <Button
          ... Button 1 />
    
       <Button
          ... Button 2 />
    
       <Button
          ... Button 3 />
    
    </RelativeLayout>
    

    我不知道这是否有效,也无法测试它,但您可以尝试一下这样的方法;我相信这一切都可以通过XML优雅地完成

  • 有一个包含所有视图的RelativeLayout(id:mainLayout),为两个维度包装内容
  • 有一个空白视图作为您的第一个孩子,将作为您的背景栏
  • 将视图的背景色/图像设置为所需的颜色;填充父对象的布局宽度;包装内容的布局高度;布局_alignTop=“@id/leftButton”;布局\u alignBottom=“@id/leftButton”
  • 为中间按钮(id:bigButton)添加一个ImageButton,为两个维度包装内容;布局\u centerInParent=“true”
  • 为左按钮(id:leftButton)添加一个ImageButton,为两个维度包装内容;布局_toLeftOf=“@id/bigButton”;布局\u centerInParent=“true”
  • 为右按钮(id:rightButton)添加一个ImageButton,为两个维度包装内容;布局_toRightOf=“@id/bigButton”;布局\u centerInParent=“true”

  • 在我的脑海里,我相信这是可行的,但我可以离开。不管怎样,还是要考虑一些问题,我希望它能帮助您找到解决方案。:)

    我不知道这是否有效,我也无法测试它,但你可以试试这样的东西;我相信这一切都可以通过XML优雅地完成

  • 有一个包含所有视图的RelativeLayout(id:mainLayout),为两个维度包装内容
  • 有一个空白视图作为您的第一个孩子,将作为您的背景栏
  • 将视图的背景色/图像设置为所需的颜色;填充父对象的布局宽度;包装内容的布局高度;布局_alignTop=“@id/leftButton”;布局\u alignBottom=“@id/leftButton”
  • 为中间按钮(id:bigButton)添加一个ImageButton,为两个维度包装内容;布局\u centerInParent=“true”
  • 为左按钮(id:leftButton)添加一个ImageButton,为两个维度包装内容;布局_toLeftOf=“@id/bigButton”;布局\u centerInParent=“true”
  • 为右按钮(id:rightButton)添加一个ImageButton,为两个维度包装内容;布局_toRightOf=“@id/bigButton”;布局\u centerInParent=“true”
  • 在我的脑海里,我相信这是可行的,但我可以离开。不管怎样,还是要考虑一些事情,我希望它能帮助你找到解决方案