【问题标题】:How to create a layout that's split diagonally and the two halves are clickable?如何创建对角分割且两半可点击的布局?
【发布时间】:2014-09-19 10:45:36
【问题描述】:

我需要创建一个布局,将屏幕沿对角线分成两部分,背景颜色不同。像这样:

我怎样才能做到这一点?

【问题讨论】:

  • 您是想像这样绘制还是实际创建具有左右子视图的新 GroupView,并能够在其中添加子视图?
  • @sromku 我想创建一个包含左右子视图的组视图,并能够在其中添加子视图。
  • 在您自己的自定义视图组中扩展 LinearLayout。 jayway.com/2012/06/25/…

标签: android android-layout


【解决方案1】:

这可以按如下方式完成:

  • 创建一个FrameLayout(假设为 50x50 像素)。
  • 创建两个ImageViews(在FrameLayout 内并将它们设置为match_parent)并作为源给它们两个三角形。
  • FrameLayout 创建一个onTouchListener

现在是棘手的部分:

public boolean onTouch(View v, MotionEvent me){ 
  float time  = System.getCurrentTimeInMilles();

  if(me.action == MotionEvent.DOWN)
    lastTimePress = time;   /// global var

  if(me.action == MotionEvent.UP && lastTimePress - time < 200){
    if(calcPlace(me.getX()) < me.getY())
      /// go to onClick for the right triangle
    else
      /// go to onClick for the left triangle
  }
}

public int calcPlace(int x){
  return 50 -x; 
}

您不必为两个三角形 (ImageViews) 设置 onClickListener,只需一个处理点击的方法即可。

有些字段可能是错误的,对此深表歉意:) 希望你明白这一点。

【讨论】:

    【解决方案2】:

    应该可以创建一个视图作为背景,然后在其上方以 45 度角放置另一个视图。将两者都放在 FrameLayout 中以再次将其剪辑为矩形。您可以为它们中的每一个分配一个 onClick 处理程序。

    【讨论】:

      【解决方案3】:

      可以通过xml设置背景。将同一背景的abc图片做成不同尺寸:

      <?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:background="@drawable/abc"
              android:orientation="vertical" >
      </LinearLayout>
      

      【讨论】:

        猜你喜欢
        • 2012-04-16
        • 2022-01-12
        • 1970-01-01
        • 2013-03-26
        • 1970-01-01
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多