android - docs - nativescript 책




버튼 여백의 레이아웃 문제 (2)

기억하세요, android:layout_* 속성은 LayoutParams 입니다. 그것들은 부모에 대한 인수이며 부모가 그 뷰에서 레이아웃을 수행하는 방법에 영향을 미칩니다. 당신은 버튼에 layout_margin 속성을 지정하고 있지만 무시됩니다. 이유는 다음과 같습니다.

LayoutParams 는 부모 뷰 유형에만 해당되므로 LayoutInflater 사용하여 레이아웃을 확장 할 때 올바른 상위 유형의 인스턴스를 제공해야합니다. 그렇지 않으면 레이아웃의 최상위보기에서 layout_ 속성이 삭제됩니다. (인플레이터는 생성 할 LayoutParams 유형을 알 수 없습니다.)

buttonList 는 버튼 뷰의 부모이므로, inflate 행을 다음과 같이 변경하십시오.

btn = (Button) layoutInflater.inflate(R.layout.button, buttonList, false);

안드로이드 응용 프로그램에서 레이아웃을 구성하는 데 문제가 있습니다. 동적으로 버튼을 만들고이 코드를 레이아웃에 추가하고 있습니다.

    LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    for (int i = 0; i < NO_NUMBERS; i++){

        Button btn = new Button(this);
        btn = (Button) layoutInflater.inflate(R.layout.button, null);
        btn.setId(2000+i);
        Integer randomNumber = sort.getNumbersCopy()[i];
        btn.setText(randomNumber.toString());
        btn.setOnClickListener((OnClickListener) this);
        buttonList.addView(btn);
        list.add(btn);
    }

LinearLayout에 추가하고 있습니다.

<LinearLayout
    android:id="@+id/buttonlist"
    android:layout_alignParentLeft="true"
    android:layout_marginTop="185dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

</LinearLayout>

그리고이 .xml을 가져오고 있는데 버튼 레이아웃을 정의하고 있습니다.

<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:textSize="26dp"
android:textStyle ="bold"
android:textColor="#ffffff"
android:background="@drawable/button"
android:layout_marginLeft="8px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>

레이아웃은 항상 다음과 같이 끝납니다.

이와 같은 것 (버튼, 정사각형 버튼 사이의조차도)

이것을 요약하면 : 나는해야한다 :

  • xml의 ​​버튼 설명
  • N 버튼을 동적으로 생성
  • 동적으로 생성 된 버튼에 설명 된 버튼의 속성을 추가합니다.
  • 레이아웃을 구성하여 버튼 목록의 버튼을 tham 사이의 공백과 함께 고르게 분배 할 수 있습니다.

버튼 자체에 layout_weight 를 설정하면 버튼 사이에 간격을 두지 않고 버튼이 확장됩니다. LinearLayout 은 자식 뷰 사이에 공간을 추가하지 않습니다.

FrameLayout 하고 버튼에 FrameLayout layout_gravity="center" 를 사용하고 FrameLayout layout_weight="1" 을 설정해야합니다.

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1">
    <Button android:layout_{width,height}="wrap_content"
       android:layout_gravity="center"/>
</FrameLayout>




android-layout