Android 사용자 정의 LinkearLayout+XML에서 속성 및 표시
배경.
이 글은 다음과 같은 두 가지 방법을 원하는 사람에게 참고가 될 수 있다.
1. 맞춤형 뷰를 제작한 후 사용하는 경우
2. 사용자 정의 XML에 사용자 정의 Attribute를 정의하고 사용하고자 하는 경우
그림 1
그림 1에서 보듯이 MyActivity에 세 가지 맞춤형 MyLinker Layout을 추가합니다.각각의 MyLinkearLayout은 배경색이 다르다.다만 각 마이 라인 Layout의 배경색은 마이 액티비티가 아닌 마이 라인 Layout의 XML에 RGB의 값을 부여하고, 마이 라인 Layout 내부에서 RGB를 받아 자체 배경색을 설정한다.
소스 코드
1. MyLinerLayout.java
class MyLinerLayout extends LinearLayout {
private LayoutInflater mLayoutInflater;
private Resources mResources;
public MyLinerLayout(Context context) {
super(context);
}
public MyLinerLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initialize(attrs,0);
}
public MyLinerLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize(attrs,defStyleAttr);
}
private void initialize(AttributeSet attrs, int defStyleAttr){
int r = 255;
int g = 255;
int b = 255;
if(attrs != null){
String packageName = "http://www.mrway.net/syoui";
r = attrs.getAttributeIntValue(packageName,"r",255);
g = attrs.getAttributeIntValue(packageName,"g",255);
b = attrs.getAttributeIntValue(packageName,"b",255);
}
mResources = getContext().getResources();
mLayoutInflater = LayoutInflater.from(getContext());
View view = mLayoutInflater.inflate(R.layout.my_liner_layout, this);
((TextView) view.findViewById(R.id.color)).setText(r+":"+g+":"+b);
int backgroundColor = Color.argb(255,r,g,b);
((LinearLayout) view.findViewById(R.id.colorLayout)).setBackgroundColor(backgroundColor);
}
}
2. my_liner_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/colorLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/color"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="white"/>
</LinearLayout>
3. foundation_activity_get_attribute_from_xml.java
public class foundation_activity_get_attribute_from_xml extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_foundation_get_attribute_from_xml);
}
}
4. activity_foundation_get_attribute_from_xml.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.syoui.imagetab.foundation.activity.foundation_activity_get_attribute_from_xml">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.syoui.imagetab.foundation.activity.MyLinerLayout
xmlns:color="http://www.mrway.net/syoui"
color:r="238"
color:g="34"
color:b="12"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</com.example.syoui.imagetab.foundation.activity.MyLinerLayout>
<com.example.syoui.imagetab.foundation.activity.MyLinerLayout
xmlns:color="http://www.mrway.net/syoui"
color:r="239"
color:g="95"
color:b="107"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</com.example.syoui.imagetab.foundation.activity.MyLinerLayout>
<com.example.syoui.imagetab.foundation.activity.MyLinerLayout
xmlns:color="http://www.mrway.net/syoui"
color:r="248"
color:g="186"
color:b="0"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</com.example.syoui.imagetab.foundation.activity.MyLinerLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
결실
그림 2
세 가지 색으로 나눌 수 있어요.
다들 좋네요.
Reference
이 문제에 관하여(Android 사용자 정의 LinkearLayout+XML에서 속성 및 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xu1718191411/items/4c1a7c322ef3c3db8908
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. MyLinerLayout.java
class MyLinerLayout extends LinearLayout {
private LayoutInflater mLayoutInflater;
private Resources mResources;
public MyLinerLayout(Context context) {
super(context);
}
public MyLinerLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initialize(attrs,0);
}
public MyLinerLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize(attrs,defStyleAttr);
}
private void initialize(AttributeSet attrs, int defStyleAttr){
int r = 255;
int g = 255;
int b = 255;
if(attrs != null){
String packageName = "http://www.mrway.net/syoui";
r = attrs.getAttributeIntValue(packageName,"r",255);
g = attrs.getAttributeIntValue(packageName,"g",255);
b = attrs.getAttributeIntValue(packageName,"b",255);
}
mResources = getContext().getResources();
mLayoutInflater = LayoutInflater.from(getContext());
View view = mLayoutInflater.inflate(R.layout.my_liner_layout, this);
((TextView) view.findViewById(R.id.color)).setText(r+":"+g+":"+b);
int backgroundColor = Color.argb(255,r,g,b);
((LinearLayout) view.findViewById(R.id.colorLayout)).setBackgroundColor(backgroundColor);
}
}
2. my_liner_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/colorLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/color"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="white"/>
</LinearLayout>
3. foundation_activity_get_attribute_from_xml.java
public class foundation_activity_get_attribute_from_xml extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_foundation_get_attribute_from_xml);
}
}
4. activity_foundation_get_attribute_from_xml.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.syoui.imagetab.foundation.activity.foundation_activity_get_attribute_from_xml">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.syoui.imagetab.foundation.activity.MyLinerLayout
xmlns:color="http://www.mrway.net/syoui"
color:r="238"
color:g="34"
color:b="12"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</com.example.syoui.imagetab.foundation.activity.MyLinerLayout>
<com.example.syoui.imagetab.foundation.activity.MyLinerLayout
xmlns:color="http://www.mrway.net/syoui"
color:r="239"
color:g="95"
color:b="107"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</com.example.syoui.imagetab.foundation.activity.MyLinerLayout>
<com.example.syoui.imagetab.foundation.activity.MyLinerLayout
xmlns:color="http://www.mrway.net/syoui"
color:r="248"
color:g="186"
color:b="0"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</com.example.syoui.imagetab.foundation.activity.MyLinerLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
결실
그림 2
세 가지 색으로 나눌 수 있어요.
다들 좋네요.
Reference
이 문제에 관하여(Android 사용자 정의 LinkearLayout+XML에서 속성 및 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xu1718191411/items/4c1a7c322ef3c3db8908
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Android 사용자 정의 LinkearLayout+XML에서 속성 및 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xu1718191411/items/4c1a7c322ef3c3db8908텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)