2016-06-17 48 views
-1

我是一名Android应用程序开发人员。我正在寻找一种最快捷方便的方式来实现我正在构建的应用程序的菜单结构。下面是一个Taylor Swift应用程序,它具有我很想实现的菜单结构。任何建议或示例代码将不胜感激。谢谢。 enter image description hereAndroid垂直标签菜单底部

回答

0

尝试这样的事情

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.simarzhov.weights.MainActivity"> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom" 
      android:background="@drawable/ic_20x60_24bp"></LinearLayout> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/ic_20x80_24bp" 
      android:layout_gravity="bottom"></LinearLayout> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom" 
      android:background="@drawable/ic_30x40_24bp"></LinearLayout> 
    </LinearLayout> 
</RelativeLayout> 

注重android:layout_gravity="bottom"

附:我知道这不是很优雅,但如果你有底部菜单,它可能会有所帮助。

1

您需要制作一个TextView的自定义版本才能实现此目的。 可以找到解决方案here 我提供了下面的代码。

public class VerticalTextView extends TextView{ 
    final boolean topDown; 

    public VerticalTextView(Context context, AttributeSet attrs){ 
     super(context, attrs); 
     final int gravity = getGravity(); 
     if(Gravity.isVertical(gravity) && (gravity&Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { 
     setGravity((gravity&Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP); 
     topDown = false; 
     }else{ 
     topDown = true; 
     } 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ 
     super.onMeasure(heightMeasureSpec, widthMeasureSpec); 
     setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); 
    } 

    @Override 
    protected void onDraw(Canvas canvas){ 
     TextPaint textPaint = getPaint(); 
     textPaint.setColor(getCurrentTextColor()); 
     textPaint.drawableState = getDrawableState(); 

     canvas.save(); 

     if(topDown){ 
     canvas.translate(getWidth(), 0); 
     canvas.rotate(90); 
     }else { 
     canvas.translate(0, getHeight()); 
     canvas.rotate(-90); 
     } 


     canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop()); 

     getLayout().draw(canvas); 
     canvas.restore(); 
    } 
} 
+0

谢谢。它运作良好。 Upvoted。我试图改变不同结果的旋转()角度。我不是很成功 –