2016-08-20 12 views
0

私はAndroid開発の新人ですが、私は何か小さくて重大なことを忘れてしまっています(私は何かを完全にそして間違ってやっています)。 多くのコントロール(ツールバー、カスタムビュー、および2つのボタン)を追加する画面レイアウトを作成しました。 現在、カスタムビューはすべて、画面にテキストを描画します。しかし、それは私が期待しない何かをしている。カスタムビューが他のビューを引き継いでいます

まず、テキストはツールバーの下に描画されます。これは、画面に表示されるように図面をオフセットすることができますが、ツールバーとビューが垂直方向のリニアレイアウトになっているため、カスタムビューがツールバーのすぐ下から開始されることが予想されます。

私の主な問題は、カスタムビューをレイアウトに追加すると、画面全体に描画されて2つのボタンが表示されないように見えるということです。ここで

は、活動のレイアウトです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_activity" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    tools:context="com.myapp.MainScreen"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/main_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:elevation="4dp" 
     android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 


    <com.myapp.MyControl 
     android:id="@+id/my_control" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/main_buttons" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <Button android:id = "@+id/one" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 

     <Button android:id = "@+id/two" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 

    </LinearLayout> 

</LinearLayout> 

私のコントロールは、現時点では非常に簡単です:

public class MyControl extends View { 

    private String mText; 

    private Paint mTextPaint; 

    public MyControl(Context context, AttributeSet attributeSet){ 
     super(context, attributeSet); 

     mText = "My Control"; 

     mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     mTextPaint.setTextSize(100); 
    } 

    protected void onDraw(Canvas canvas) 
    { 
     canvas.drawText(mText, 5, 50, mTextPaint); 
    } 
} 

すべてのヘルプは

+0

LinearLayoutの代わりに相対レイアウトを使用します。 –

答えて

0

この

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:id="@+id/main_activity" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:weightSum="1"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="0.75"> 

      <com.thisana.RageMaker.Helpers.MyControl 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/view" 
       android:layout_gravity="center_horizontal"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="0.25" 
      android:weightSum="1" 
      android:gravity="center" 
      > 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="New Button" 
       android:id="@+id/button"/> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="New Button" 
       android:id="@+id/button2"/> 
     </LinearLayout> 
    </LinearLayout> 
</RelativeLayout> 
を使用していただければ幸いです

enter image description here

+0

これはかなりうまくいかないようです。 はい、今は自分のボタンが見えますが、私のビューは画面に描画されません。 最後に、上からを追加しました。 –

+0

sry code alignment problem answerが更新されました。 –

+0

変更はありません。私のビューからのテキストはまだ私の画面に描画されません。 onDrawメソッドは確実に呼び出されていますが、何も描画されません。 –

関連する問題