layout_weight 속성을 코드에서 동적으로 설정하는 방법은 무엇입니까?
속성 값을 설정하려면 어떻게 해야 합니까?layout_weight
자바 코드에서 동적으로 안드로이드의 버튼을 위해?
당신은 그것을 의 일부로 전달할 수 있습니다.LinearLayout.LayoutParams
생성자:
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT,
1.0f
);
YOUR_VIEW.setLayoutParams(param);
마지막 매개 변수는 가중치입니다.
사용:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 1.0f;
Button button = new Button(this);
button.setLayoutParams(params);
편집: 아, 에리히의 대답이 더 쉬워요!
레이아웃(xml) 파일에 보기를 이미 정의한 경우 프로그래밍 방식으로 가중치를 변경하는 것이 좋습니다.
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)
mButton.getLayoutParams();
params.weight = 1.0f;
mButton.setLayoutParams(params);
새로운 레이아웃 매개변수는 xml 파일에 정의된 다른 매개변수(예: 여백)를 덮어씁니다. 그렇지 않으면 레이아웃 매개변수에 모두 지정해야 합니다.
폭, 높이 및 무게를 가진 생성자가 작동하지 않으면 너비 및 높이를 가진 생성자를 사용해 보십시오.그런 다음 무게를 수동으로 설정합니다.
그리고 무게에 따라 너비를 설정하려면 생성자에서 너비를 0으로 설정합니다.높이도 마찬가지입니다.아래 코드가 저에게 적용됩니다.
LinearLayout.LayoutParams childParam1 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT);
childParam1.weight = 0.3f;
child1.setLayoutParams(childParam1);
LinearLayout.LayoutParams childParam2 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT);
childParam2.weight = 0.7f;
child2.setLayoutParams(childParam2);
parent.setWeightSum(1f);
parent.addView(child1);
parent.addView(child2);
한다면layoutparams
이미 정의되어 있습니다(XML 또는 동적으로). 여기 하나의 라이너가 있습니다.
((LinearLayout.LayoutParams) mView.getLayoutParams()).weight = 1;
답을 찾는 사용자는 다음을 사용합니다.
LinearLayout.LayoutParams lay = (LinearLayout.LayoutParams) myLayout.getLayoutParams();
lay.weight = 0.5;
xml 파일에서 레이아웃을 초기화하는 경우 선형 레이아웃에 대한 새 레이아웃 매개 변수를 제공하는 것보다 훨씬 편리합니다.
다음 중 하나LinearLayout.LayoutParams
그리고.TableLayout.LayoutParams
나를 위해 일했고, 버튼을 위해 맞는 것은.TableRow.LayoutParams
즉, 다음과 같습니다.
TableRow.LayoutParams buttonParams = new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT, 1f);
사용 정보MATCH_PARENT
또는WRAP_CONTENT
똑같습니다
레이아웃(xml) 파일에 보기를 이미 정의했지만 가중치만 프로그래밍 방식으로 변경하려는 경우 새 레이아웃 매개 변수를 만들면 xml 파일에 정의된 다른 매개 변수가 덮어씁니다.
먼저 "getLayoutParams"를 사용한 다음 LayoutParams를 설정해야 합니다.
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams(); params.weight = 4f; mButton.setLayoutParams(params);
이 코드 라인을 추가하여 작업을 완료했습니다!
LinearLayout.LayoutParams mylayout = (LinearLayout.LayoutParams)
myview.getLayoutParams();
mylayout.weight = 2;
myview.setLayoutParams(mylayout);
Kotlin을 사용하면 다음과 같은 작업을 수행할 수 있습니다.
import android.content.Context
import android.support.v4.content.ContextCompat
import android.support.v7.widget.CardView
import android.widget.*
import android.widget.LinearLayout
class RespondTo : CardView {
constructor(context: Context) : super(context) {
init(context)
}
private fun init(context: Context) {
val parent = LinearLayout(context)
parent.apply {
layoutParams = LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT, 1.0f).apply {
orientation = LinearLayout.HORIZONTAL
addView(EditText(context).apply {
id = generateViewId()
layoutParams = LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 0.9f).apply {
}
})
addView(ImageButton(context).apply({
layoutParams = LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 0.1f)
background = null
setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_save_black_24px))
id = generateViewId()
layoutParams = RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT).apply {
addRule(RelativeLayout.ALIGN_PARENT_RIGHT)
// addRule(RelativeLayout.LEFT_OF, myImageButton.id)
}
}))
}
}
this.addView(parent)
}
}
가중치를 선형 레이아웃으로 설정하려면 아래에 언급된 코드를 사용하거나 가중치를 상대 레이아웃으로 설정한 다음 상대 레이아웃으로 대체합니다.
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT,
1.0f
); YOUR_VIEW.setLayoutParams(파라미터);
당신은 이 방법을 시도할 수 있습니다.먼저 이 단추와 연결된 레이아웃 매개변수를 얻습니다.형식 변환을 수행합니다.
LinearLayout.LayoutParams linearLayoutParams = (LinearLayout.LayoutParams) button.getLayoutParams();
그런 다음 "weight" 매개 변수의 필요한 값을 할당합니다.
linearLayoutParams.weight = 5;
레이아웃을 다시 그립니다.
button.requestLayout();
코틀린에서는 다음과 같이 합니다.
val params = mButton.layoutParams as LinearLayout.LayoutParams
params.weight = 1.0f
mButton.layoutParams = params
언급URL : https://stackoverflow.com/questions/4641072/how-to-set-layout-weight-attribute-dynamically-from-code
'IT' 카테고리의 다른 글
마리아를 사용하여 카트 1.5.6.4 열기DB (0) | 2023.09.05 |
---|---|
도커 컨테이너에 정적 IP 할당 (0) | 2023.09.05 |
*내 것이 아닌*요구를 통해 로드한 모듈의 경로를 얻으려면 어떻게 해야 합니까(예: 일부 node_module에서) (0) | 2023.09.05 |
로그아웃 시 JWT 토큰을 폐기하는 방법은 무엇입니까? (0) | 2023.09.05 |
인라인/인라인 블록 요소의 CSS 수직 정렬 (0) | 2023.09.05 |