안드로이드 - 버튼으로 레이아웃을 채우십시오
-
19-09-2019 - |
문제
이것을 구현하는 방법에 대한 간단한 질문입니다. 화면 하단에 버튼이 있고 화면 크기가 더 크면 더 많은 버튼이 추가됩니다.
예를 들어, 작은 화면 크기에서는 하단에 4-5 개의 버튼이있을 수 있지만 태블릿이나 이와 유사한 버튼을 실행하면 20 개의 버튼이있을 수 있습니다.
제안이 있습니까? 스크롤 할 수는 없으며 버튼으로 레이아웃을 동적으로 채워야합니다.
감사.
해결책
레이아웃 하단에 버튼을 넣으려면 레이아웃에 이와 같은 작업을 수행하십시오.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout">
<LinearLayout
android:layout_height="wrap_content"
android:id="@+id/button_layout"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:gravity="center">
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"></Button>
<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"></Button>
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3"></Button>
</LinearLayout>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/button_layout"
android:id="@+id/content">
<ListView
android:id="@+id/ListView01"
android:layout_height="fill_parent"
android:layout_width="fill_parent"></ListView>
</FrameLayout>
</RelativeLayout>
화면 크기에 따라 몇 개의 버튼이 표시 되려면 여러 화면 크기에 대해 별도의 레이아웃을 구현해야합니다.
http://developer.android.com/guide/practices/screens_support.html
다른 팁
자신의 사용자 정의 레이아웃 클래스를 만들고 싶은 것처럼 들립니다. 화면 공간이 부족할 때까지 선형 층을 채우거나 채우십시오.
픽셀의 버튼 크기를 알고 있다면 DisplayMetrics를 사용하여 화면의 크기를 얻을 수 있으며 할당 된 공간에 몇 개의 버튼이 맞는지 계산할 수 있습니다.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Metrics.heightpixels givs 픽셀 메트릭의 절대 높이.
Metrics.density는 스케일링 목적으로 논리적 밀도를 제공합니다
여기를 봐: http://developer.android.com/reference/android/util/displaymetrics.html
그런 다음 같은 일을하십시오
do{
Button button=new Button(context);
button.setText("yada yada")
button.allYoursettings....
.
.
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LinearLayout layout=(LinearLayout) findViewById(R.id.yourlayout);
layout.addView(button,p);
} while(havespaceleft);
제휴하지 않습니다 StackOverflow