2016-06-17 11 views
-1

私はAndroid用アプリケーション開発者です。私は構築しているアプリケーションのメニュー構造を実現する最も簡単で便利な方法を探しています。以下は私が達成したいと思う正確なメニュー構造のTaylor Swiftアプリです。どんな提案やサンプルコードも感謝します。ありがとう。 enter image description hereAndroidの垂直タブのメニュー

答えて

0

android:layout_gravity="bottom"

P.S.この

<?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> 

ご注意のようなものを試してみてください私はこれがあまりエレガントではないことを理解していますが、一定のボトムメニューがあれば役立つかもしれません。

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。私は別の結果についてもrotate()の角度を変更しようとしました。私はあまり成功していなかった –

関連する問題