空のActivity_mainレイアウトがあります。私は画面幅の特定の%でなければならないボタンの数を追加したいので、私はそれらをプログラムで追加したいと思います。このサイトのすべての例では、LinearLayoutを使用しています。 Activity_mainに直接ボタンを追加することは可能ですか?アンドロイドの空のMainActivityにボタンを追加することはできますか?
ありがとうございました。
空のActivity_mainレイアウトがあります。私は画面幅の特定の%でなければならないボタンの数を追加したいので、私はそれらをプログラムで追加したいと思います。このサイトのすべての例では、LinearLayoutを使用しています。 Activity_mainに直接ボタンを追加することは可能ですか?アンドロイドの空のMainActivityにボタンを追加することはできますか?
ありがとうございました。
ViewGroupは、レイアウトとビューコンテナの基本クラスであるため、ViewGroupが必要です。
線形レイアウトを使用しない場合は、制約レイアウトを使用できます。制約レイアウトにはGuidelinesが付いています。これらは、画面の特定のパーセンテージを測定し、ボタン(またはビュー)をその横に並べるのに役立ちます。
上記画像は、ガイドラインの仕組みの一例です。 1つ目は、画面の25%を占める垂直方向のガイドラインです(画面を垂直に4つに分割すると考えることができます)。 2つ目は画面の50%を占める水平ガイドラインです(画面を水平に2つに分割)。
私はあなたがガイドラインでこれを達成することができ、画面幅
の特定%でなければならないボタンの数を追加したいです。ここだけのxmlを使用してそれを行う方法は次のとおりです。
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.chornge.myapplication.MainActivity">
<android.support.constraint.Guideline
android:id="@+id/vertical_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.25" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@id/vertical_guideline" />
<android.support.constraint.Guideline
android:id="@+id/horizontal_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.50" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/horizontal_guideline" />
</android.support.constraint.ConstraintLayout>
そして、ここではJavaを使用して同じ効果を作成する方法は次のとおりです。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout = new ConstraintLayout(this);
constraintLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
setContentView(constraintLayout);
/* vertical guideline */
Guideline verticalGuide = new Guideline(this);
ConstraintLayout.LayoutParams verticalGuideParams =
new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
verticalGuideParams.guidePercent = 0.25f;
verticalGuideParams.orientation = LinearLayout.VERTICAL;
verticalGuide.setLayoutParams(verticalGuideParams);
verticalGuide.setId(View.generateViewId());
constraintLayout.addView(verticalGuide);
/* create button1 and align its left edge to the right edge of vertical guideline*/
Button button1 = new Button(this);
button1.setId(View.generateViewId());
ConstraintLayout.LayoutParams button1Params =
new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
button1Params.leftToRight = verticalGuide.getId();
button1.setLayoutParams(button1Params);
constraintLayout.addView(button1);
/* horizontal guideline */
Guideline horizontalGuide = new Guideline(this);
ConstraintLayout.LayoutParams horizontalGuideParams =
new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
horizontalGuideParams.guidePercent = 0.5f;
horizontalGuideParams.orientation = LinearLayout.HORIZONTAL;
horizontalGuide.setLayoutParams(horizontalGuideParams);
horizontalGuide.setId(View.generateViewId());
constraintLayout.addView(horizontalGuide);
/* create button2 and align its top edge to the bottom edge of horizontal guideline*/
Button button2 = new Button(this);
button2.setId(View.generateViewId());
ConstraintLayout.LayoutParams button2Params =
new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
button2Params.topToBottom = horizontalGuide.getId();
button2.setLayoutParams(button2Params);
constraintLayout.addView(button2);
}
注:
topToTop
またはtopToBottom
またはbottomToTop
またはbottomToBottom
またはleftToLeft
またはleftToRight
またはrightToLeft
またはrightToRight
を使用して、別のViewまたはViewGroupと整列させます。0.05f
,0.333f
,0.8f
となります。これは完璧に動作します – Pizzarius
アクティビティには、ルートビューであるViewGroupがあります。そのViewGroupにボタンをアタッチする必要があります。 –