[android] 제목 배경색 설정

내 안드로이드 응용 프로그램에서 표준 / 기본 제목 표시 줄의 색상을 변경하고 싶습니다.

가지고있는 텍스트 색상을 변경하려면 setTitleColor(int color)바의 배경색을 변경하는 방법이 있습니까?



답변

스레드 는 xml 파일에 고유 한 제목 표시 줄을 작성하고이를 활동에 사용하는 방법을 시작합니다.

편집하다

이것은 – 다음은 위의 링크의 내용에 대한 간략한 요약입니다 단지 크기가 조정없이 버튼, 바로 simpliest 샘플 – 텍스트의 색상과 제목 표시 줄의 배경을 설정할 수는

res / layout / mytitle.xml- 제목 표시 줄을 나타내는보기입니다.

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/myTitle"
  android:text="This is my new title"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:textColor="@color/titletextcolor"
   />

res / values ​​/ themes.xml- 기본 안드로이드 테마를 유지하고 제목 배경의 배경색 만 변경하면됩니다. 따라서 기본 테마를 상속하는 테마를 만들고 배경 스타일을 자체 스타일로 설정합니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="customTheme" parent="android:Theme"> 
        <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>   
    </style> 
</resources>

res / values ​​/ styles.xml- 제목 배경에 원하는 색상을 사용하도록 테마를 설정하는 곳입니다.

<?xml version="1.0" encoding="utf-8"?>
<resources> 
   <style name="WindowTitleBackground">     
        <item name="android:background">@color/titlebackgroundcolor</item>                   
    </style>
</resources>

res / values ​​/ colors.xml- 여기에서 원하는 색상 설정

<?xml version="1.0" encoding="utf-8"?>
<resources>   
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>

에서 의 AndroidManifest.xml (만이 활동) 태그 (전체 응용 프로그램) 응용 프로그램 또는 활동 중 하나 테마 속성을 설정

<activity android:name=".CustomTitleBar" android:theme="@style/customTheme" ...

활동에서 (CustomTitleBar라고 함) :

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);

}


답변

이 명확한 설명에 감사드립니다. 그러나 연결된 질문을 통해 답변에 조금 더 추가하고 싶습니다 (이 질문은 내 질문의 지하실이므로 새 게시물을 작성하고 싶지 않습니다).

다른 모든 활동이 자식 인 Superclass에서 제목 표시 줄을 선언하고 있으므로 막대의 색상을 한 번만 변경해야합니다. 아이콘을 추가하고 바의 텍스트도 변경하고 싶습니다. 몇 가지 테스트를 수행하고 둘 중 하나를 변경했지만 동시에 둘 다 변경하지는 못했습니다 (setFeatureDrawable 및 setTitle 사용). 이상적인 솔루션은 물론 링크에 제공된 스레드의 설명을 따르는 것이지만 수퍼 클래스에서 선언함에 따라 setContentView 및 R.id.myCustomBar의 레이아웃으로 인해 문제가 있습니다. setContentView를 한 번만 호출 할 수 있다는 것을 기억하십시오.

수정
내 대답을 찾았습니다.

나처럼 앱의 모든 곳에서 메뉴를 사용할 수 있기 때문에 슈퍼 클래스로 작업하는 것을 좋아하는 사람들에게는 여기서도 동일하게 작동합니다.

수퍼 클래스에 다음을 추가하십시오.

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.customtitlebar);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitlebar);
    customTitleText = (TextView) findViewById(R.id.customtitlebar);

(텍스트 뷰를 보호 된 클래스 변수로 선언해야합니다)

그리고 이것의 힘은 앱의 모든 곳에서 (예를 들어 모든 활동이이 클래스의 하위 인 경우) 호출해야한다는 것입니다.

customTitleText.setText("Whatever you want in title");

제목 표시 줄이 편집됩니다.

내 경우에 연결된 XML은 (R.layout.customtitlebar)입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@color/background">
<ImageView android:layout_width="25px" android:layout_height="25px"
    android:src="@drawable/icontitlebar"></ImageView>
<TextView android:id="@+id/customtitlebar"
    android:layout_width="wrap_content" android:layout_height="fill_parent"
    android:text="" android:textColor="@color/textcolor" android:textStyle="bold"
    android:background="@color/background" android:padding="3px" />
</LinearLayout>


답변

배경색을 변경하는 또 다른 방법이 있지만 이는 해킹이며 Window의 View 계층 구조와 제목이 변경되면 Android의 향후 버전에서 실패 할 수 있습니다. 그러나 이러한 경우 코드가 충돌하지 않고 원하는 색상을 설정하지 못합니다.

onCreate와 같은 활동에서 다음을 수행하십시오.

View titleView = getWindow().findViewById(android.R.id.title);
if (titleView != null) {
  ViewParent parent = titleView.getParent();
  if (parent != null && (parent instanceof View)) {
    View parentView = (View)parent;
    parentView.setBackgroundColor(Color.rgb(0x88, 0x33, 0x33));
  }
}


답변

이 코드는 Android에서 프로그래밍 방식으로 제목 표시 줄의 배경을 변경하는 데 도움이됩니다. 색상을 원하는 색상으로 변경하십시오.

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);
    getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1c2833")));

}


답변

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View titleView = getWindow().findViewById(android.R.id.title);
    if (titleView != null) {
      ViewParent parent = titleView.getParent();
      if (parent != null && (parent instanceof View)) {
        View parentView = (View)parent;
        parentView.setBackgroundColor(Color.RED);
      }
    }

위의 코드 에서 제목 표시 줄 대신 제목을 사용해 볼 수 있습니다.
이것은 애플리케이션의 모든 활동에 영향을 미칩니다.


답변

나는 그렇지 않다고 생각한다. 제목없는 활동을 만들고 활동 레이아웃에 자신의 제목 표시 줄을 만들 수 있습니다.

, 라인 63 이하를 확인하십시오 .

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)

기본 제목보기 대신 customview를 설정합니다.


답변

platforms/android-2.1/data/res/layout/screen.xmlSDK를 살펴보십시오 . 거기에 제목을 정의하는 것 같습니다. 이와 같은 레이아웃을 자주 검토하고 style="?android:attr/windowTitleStyle"
스타일을 빌려
자신의 TextView에서 사용하고 재정의 할 수 있습니다.

다음을 수행하여 직접 조정할 제목을 선택할 수도 있습니다.

TextView title = (TextView)findViewById(android.R.id.title);