私は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);
}
}
すべてのヘルプは
LinearLayoutの代わりに相対レイアウトを使用します。 –