2014-10-22 2 views
1

저는 8 TextView을 동적으로 만들고 레이아웃에 추가하고 있습니다. 텍스트 색상을 설정하고 싶습니다. 그래서 난 내 color.xml의 색상 코드를 선언하고 난로 설정하고있다 :프로그래밍 방식으로 모든 TextView에 텍스트 색상을 설정하는 방법은 무엇입니까?

txt1.setTextColor(getResources().getColor(R.color.off_white)); 

하지만 중복 모든 TextView의 개별적으로이 작업을 수행해야합니다. 모든 TextView에 대해 전역으로 설정할 수있는 방법이 있습니까? 예를 들어 우리가 jQuery를에서 할 수있는 것과 비슷한 뭔가 :

$('input[type="text"]').css('color','white'); 
+0

어떻게'TextView'를 만들 었는지에 따라 다릅니다. – Rustam

+0

Android는 텍스트 색상을 설정하는 전역 API를 지원하지 않습니다. for 루프는 색상을 설정하는 빠른 방법이자 쉬운 방법입니다. – herbertD

답변

5

당신은 사용자 정의 그것을위한 TextView를 사용할 수 있습니다. 다음과 같이

:

public class MyTextView extends TextView{ 

    public MyTextView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
     this.setTextColor(Color.GREEN); //change color as per your need here. 
    } 
} 

는 희망이 도움이 :

MyTextView mTxt = new MyTextView(getApplicationContext()); //Use MyTextView instead of TextView where you want to apply color 
mTxt.setText("Some text"); 

사용자 정의 클래스 MyTextView 뭔가처럼 될 것입니다.

1

사용자 정의 텍스트보기를 작성한 다음 해당 텍스트보기의 인스턴스를 사방에 사용해야합니다.

예 -

public class MyTextView extends TextView{ 

    public MyTextView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    public MyTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    public MyTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     setTextColor(R.color.holo_orange_light); 
    } 

} 
+0

이 질문에 대해서는 모든 기능을 과부하 할 필요가 없습니다. 그냥 nitpick,이 비록 작동합니다. – Parker

1

당신은 다음과 같은 XML 파일에 TextView을 정의 할 수있다;

<TextView 
    android:text="My Text View" 
    android:textColor="@color/myColor" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

그리고 다음 코드에서 TextView를 인스턴스화하기 위해 필요한이 레이아웃을, 팽창 같은;

LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
TextView tv1 = layoutInflater.inflate(R.layout.my_text_view, null); 
+0

xml에 프로그래밍 방식으로 표제가없는 질문을 확인하십시오. – Rustam

+0

@Rustam 예. 프로그래밍 방식으로 인스턴스화하는 대신 팽창시켜야합니다. – Ammar

관련 문제