自定义视图将绘制其他视图

时间:2016-08-20 08:57:19

标签: android android-layout

我是Android开发的新手,并且我错过了一些小而重要的事情(无论是或者我完全做错了什么都是错误的)。 我创建了一个屏幕布局,添加了许多控件(工具栏,自定义视图和两个按钮)。 目前所有自定义视图都是在屏幕上绘制文本。但是,它正在做一些我不希望的事情。

首先,文本在工具栏下方绘制。这不是太大的交易,因为我可以抵消绘图,使其出现在屏幕上,但由于我的工具栏和视图是垂直方向的线性布局,我希望我的自定义视图立即从工具栏下方开始。

无论如何,我的主要问题是,当我的自定义视图添加到布局时,它似乎在整个屏幕上绘制,因此我看不到这两个按钮(如果我删除我的自定义视图按钮就在那里)。

以下是活动的布局:

<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);
    }
}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分: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