<XML> 코드
<TextView
android:id="@+id/TextView_won"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="원"
style="@style/TextSize"
android:gravity="center"
android:layout_alignParentRight="true"
/>
에서 클릭시 height를 "40dp"로 바꿔주고 싶어서
다음과 같이 java코드를 작성하였으나 바뀌지 않음
<java>코드
public class MainActivity extends AppCompatActivity {
TextView TextView_won;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView_won = findViewById(R.id.TextView_won);
TextInputEditText_capital.setClickable(true); //clickable 하게 만들었음
TextInputEditText_capital.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView_won.setHeight(40);
}
});
}
}
해결방법
Layoutparams사용하기
(java에선 dp를 바꾸지 못하고 pixel을 기준으로 변경이 가능하다고 함
따라서 LayoutParams를 써야함)
public class MainActivity extends AppCompatActivity { TextInputEditText TextInputEditText_capital; TextView TextView_won; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextInputEditText_capital = findViewById(R.id.TextInputEditText_capital); TextView_won = findViewById(R.id.TextView_won); TextInputEditText_capital.setClickable(true); //clickable 하게 만들었음 TextInputEditText_capital.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.d("SENTI","On click"); //click 찍히는지 확인 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) TextView_won.getLayoutParams(); params.height = (int) getResources().getDimension(R.dimen.TextView_height); TextView_won.setLayoutParams(params); } }); } }
(1)
RealativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) Textview_won.getLayoutParams();
로 params 객체를 생성하고 Textview_won의 LayoutParams()를 넣어줌
(2)
params.height = (int) getResources().getDimension(R.dimen.TextView_height);
이 코드는 Resource에 있는 Dimension 의 dimen에 TextView_height라는 값을 가져와
아까 생성한 params 객체의 height 속성에 값을 넣어주는 것이다.
(이를 위해 res->values에 dimens.xml을 만들고 거기에 TextView_height의 값을 설정해주었다)
(3)
TextView_won.setLayoutParams(params);
이후 set 해준다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
java Could not find or load main class src 에러 해결 (0) | 2021.10.14 |
---|---|
java 2강 class 내의 method (0) | 2021.10.13 |
java 1강 기본개념정리(class와 instance의 관계 ) (0) | 2021.10.08 |
JAVA Editor does not contain a main type 오류 해결방법 (0) | 2021.10.06 |
emulator offline 반응안함 해결방법 (0) | 2021.10.05 |