2010-07-10 10 views
6

Jak używać iroids domyślnego stylu tytułu okna, aby utworzyć własne podobne TextView?Ustaw niestandardowy widok tytułowy z domyślnych ustawień w Androidzie

Zrobiłem wiele zgadywania i stworzyłem TextView, który ma wszystko, co ma domyślny pasek tytułu, z wyjątkiem cienia tekstu (i trochę dopełnienia/marginesów itp.).

Oto zasadniczo co próbowałem:

MainUI.xml

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

    setContentView(R.layout.main); 

    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 
} 

title_bar.xml

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:textAppearance="@android:style/TextAppearance.WindowTitle" 
    android:background="@android:drawable/title_bar" 
    android:text="This is my new title" /> 

EDIT:

znalazłem kilka ciekawych artykułów związanych pod adresem makemachine i anddev.

Mimo że mi się to nie podoba, skopiowałem niektóre atrybuty z implementacji style.xml.

Czy istnieje sposób na uniknięcie kopiowania atrybutów w ten statyczny sposób?

Następujące renderowane prawie idealnie, różnica polega na tym, że oryginał "obcina" pierwsze 2-3 piksele cienia tytułu, podczas gdy mój TextView nie.

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:gravity="center_vertical" 
    android:shadowColor="#BB000000" 
    android:shadowRadius="2.75" 
    android:singleLine="true" 
    android:textAppearance="@android:style/TextAppearance.WindowTitle" 
    android:background="@android:drawable/title_bar" 
    android:text="This is my new title" /> 

Ważne jest również, aby zastąpić domyślny android: windowTitleBackgroundStyle z przezroczystym kolorem, ponieważ domyślna zawiera pewne dopełnienie itd., Które nie chcą być owijając swój niestandardowy pasek tytułowy.

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

Pamiętaj, aby umożliwić temat w AndroidManifest.xml

+0

Nie dostaję tego, co próbujesz zrobić. Czy chcesz skopiować domyślny pasek tytułu wykonany przez Androida? – Macarse

+0

Tak, o ile mogę go zmodyfikować. Chcę, aby pasek tytułu pełnił także funkcję paska postępu :-) – Steinbitglis

+1

Nie wiem, czy to pomoże, czy nie, ale [RomManager] (https://market.android.com/details?id=com.koushikdutta.rommanager&hl= en) robi to, gdy idziesz do pobierania ROM-ów, pasek tytułu wypełnia się szarością od lewej do prawej podczas ładowania. jeśli uruchomisz go podczas działania przeglądarki Hierarchy, zobaczysz pasek postępu i koło postępu. –

Odpowiedz

0

wypróbować ten pracował dla mnie:

umieścić resztę kodu w miejscu ..

super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    setContentView(R.layout.main); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.main_header); 
    TextView home = (TextView) findViewById(R.id.home); 
     if (home != null) { 
      /* your code here */ 
      home.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // the action that u want to perform 
       Menu.this.finish(); 
       Intent i= new Intent(Main.this,Destination.class); 
       startActivity(i); 
      } 
     }); 
     } 

utworzyć plik układu nagłówka głównego

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


    <RelativeLayout 
     android:id="@+id/relativeLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:text="Main Menu" 
      android:textStyle="bold" 
      android:textSize="10pt" /> 

     <TextView 
      android:id="@+id/home" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@+id/textView1" 
      android:layout_alignBottom="@+id/textView1" 
      android:layout_alignParentRight="true" 
      android:textStyle="bold" 
      android:text="Home" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

    </RelativeLayout> 

</LinearLayout> 

tutaj, gdy wykonamy kod, pokaże się niestandardowy pasek tytułu, na którym znajdują się dwa teksty, a po kliknięciu przejdziemy do następnej klasy (do klasy docelowej). możemy również zmienić kolor, rozmiar czcionki itp .. a także dodać przyciski itp. do niestandardowego paska tytułu.

Powiązane problemy