Android 앱에서 사용자 정의 너비가있는 UI 요소가 있습니다. UI 요소는 본질적으로 두 개의 녹색 원이있는 블록입니다. 하나는 왼쪽 블록의 원이고 다른 하나는 블록 오른쪽 원입니다.Android : LayoutParams를 사용하여 View 객체의 너비 설정
전체 UI 요소의 너비를 프로그래밍 방식으로 설정할 수 있기를 원합니다. 원은 항상 일정한 크기 여야하며 중간에있는 블록은 나머지 공간을 채우기 위해 크기가 지정되어야합니다. 나는 때문에 위의 코드에서 RelativeLayout의를 사용하고
int layoutLeft = block_x_position - green_circle_width;
int layoutWidth = block_width + (green_circle_width * 2);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(layoutWidth, block_height);
layoutParams.setMargins(layoutLeft, block_y_position, 0, 0);
this.setLayoutParams(layoutParams);
this.requestLayout();
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<View
android:background="@drawable/green_circle"
android:id="@+id/left_green_circle"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
/>
<View
android:background="@drawable/blue_rectangle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
/>
<View
android:background="@drawable/green_circle"
android:id="@+id/right_green_circle"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
나는 다음과 같은 코드의보기의 레이아웃 매개 변수를 설정 : 여기
내가 현재 가지고있는 것입니다 이 전체 View 요소의 부모는 RelativeLayout입니다. 불행히도, 나는 기대했던 결과를 얻지 못하고있다. 내 "block_width"변수는 "40dp"이고 내 "green_circle_width"변수는 "20dp"입니다. 내가 대신 내보기 XML에서 "match_parent"의 "wrap_content"를 사용하여 시도했다하지만은 전혀 영향이없는 : 여기에 내가 무엇입니까 것입니다. 내 블록이 너비를 넘어서 확장되는 이유는 무엇입니까?
도움 주셔서 감사합니다.
오른쪽에 약간의 패딩은 어때요? – bluejamesbond