Yanıtlar:
FYI, ActionBar , API Düzey 11'de tanıtıldı. ActionBar, Etkinliğin üst kısmında etkinlik başlığını , gezinme modlarını ve arama gibi diğer etkileşimli öğeleri görüntüleyebilecek bir pencere özelliğidir .
Başlık çubuğunu özelleştirmeyi ve uygulama aracılığıyla tutarlı hale getirmeyi tam olarak hatırlıyorum. Bu yüzden önceki günlerle bir karşılaştırma yapabilir ve ActionBar kullanmanın avantajlarından bazılarını listeleyebilirim:
Örneğin:
getActionBar().setTitle("Hello world App");
getSupportActionBar().setTitle("Hello world App"); // provide compatibility to all the versions
Örneğin:
@Override
public void setActionBar(String heading) {
// TODO Auto-generated method stub
com.actionbarsherlock.app.ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.title_bar_gray)));
actionBar.setTitle(heading);
actionBar.show();
}
ActionBar, temel ve tanıdık görünümler, gezinme modları ve gerçekleştirilecek diğer hızlı işlemleri sağlar. Ancak bu, her uygulamada aynı göründüğü anlamına gelmez. Kullanıcı arayüzünüze ve tasarım gereksinimlerinize göre özelleştirebilirsiniz. Stilleri ve temaları tanımlamanız ve yazmanız yeterlidir.
Daha fazla bilgi için: Action Bar'ı Şekillendirin
ActionBar için stiller oluşturmak istiyorsanız, bu Stil Oluşturucu aracı size yardımcı olabilir.
================================================== ===============================
her bir ekranın Başlığını (yani Etkinlik) Android:label
<activity android:name=".Hello_World"
android:label="This is the Hello World Application">
</activity>
Ancak başlık çubuğunu kendi yolunuzla Özelleştirmek istiyorsanız, yani Want to put Image icon and custom-text
, aşağıdaki kod benim için çalışır:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="400dp"
android:layout_height="fill_parent"
android:orientation="horizontal">
<ImageView android:id="@+id/ImageView01"
android:layout_width="57dp"
android:layout_height="wrap_content"
android:background="@drawable/icon1"/>
<TextView
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"
/>
</LinearLayout>
public class TitleBar extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final boolean customTitleSupported =
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
if (customTitleSupported) {
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
R.layout.titlebar);
}
final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
if (myTitleText != null) {
myTitleText.setText("NEW TITLE");
// user can also set color using "Color" and then
// "Color value constant"
// myTitleText.setBackgroundColor(Color.GREEN);
}
}
}
Strings.xml dosyası values
klasörün altında tanımlanır .
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Set_Text_TitleBar!</string>
<string name="app_name">Set_Text_TitleBar</string>
<color name="titlebackgroundcolor">#3232CD</color>
<color name="titletextcolor">#FFFF00</color>
</resources>
Manifest dosyanızdaki her etkinlik için etiketi tanımlayabilirsiniz.
Bir etkinliğin normal tanımı şuna benzer:
<activity
android:name=".ui.myactivity"
android:label="@string/Title Text" />
Başlık metninin bu etkinlik için dize kaynağının kimliği ile değiştirilmesi gerektiğinde.
Dinamik olarak ayarlamak istiyorsanız, başlık metnini koddan da ayarlayabilirsiniz.
setTitle(address.getCity());
bu satırla başlık, etkinliğimin oncreate yönteminde belirli bir adresin şehrine ayarlanır.
Sen programlama kullanarak başlık tanımlayabilirsiniz setTitle
SİZİN içinde Activity
, bu yöntem ya bir kabul edebilir String
sizin tanımlanan veya bir kimlik values/strings.xml
dosyası. Misal:
public class YourActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
setTitle(R.string.your_title);
setContentView(R.layout.main);
}
}
ActionBar başlığını iki yoldan biriyle değiştirebiliriz:
Manifest'te: bildirim dosyasında, her bir Etkinliğin etiketini ayarlayın.
android:label="@string/TitleWhichYouWantToDisplay"
Kodda: kodda, argüman olarak setTitle () yöntemini bir String veya String kimliğiyle çağırın.
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
setTitle(R.string.TitleWhichYouWantToDisplay);
// OR You can also use the line below
// setTitle("MyTitle")
setContentView(R.layout.activity_main);
}
}
Biraz daha eski ama aynı sorunu vardı. Ben böyle yaptım:
strings.xml
<string name="title_awesome_app">My Awesome App</string>
ve bunu AndroidManifest.xml dosyasında ayarladığınızdan emin olun :
<activity
...
android:label="@string/title_awesome_app" >
...
</activity>
kolaydır ve boş referanslar ve diğer şeyler hakkında endişelenmenize gerek yoktur.
getActionBar().setTitle("edit your text");
İşlem çubuğu adını değiştirmenin en kolay yolu AndroidManifest.xml dosyasına gidip bu kodu yazmaktır.
<activity android:name=".MainActivity"
android:label="Your Label> </activity>
ActionBar ab = getActionBar();
TextView tv = new TextView(getApplicationContext());
LayoutParams lp = new RelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT, // Width of TextView
LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setTextColor(Color.RED);
ab.setCustomView(tv);
Daha fazla bilgi için bu bağlantıyı kontrol edin:
http://android--code.blogspot.in/2015/09/android-how-to-change-actionbar-title_21.html
İşlem çubuğu adını değiştirmenin en iyi yolu AndroidManifest.xml dosyasına giderek bu kodu yazmaktır.
<activity android:name=".YourActivity"
android:label="NameYouWantToDisplay> </activity>
Kotlin
Bunu Kotlin'de programlı olarak bu şekilde yapabilirsiniz. Sadece "supportActionBar" null olursa yoksay :
supportActionBar?.setTitle(R.string.my_text)
supportActionBar?.title = "My text"
Veya bu şekilde. "SupportActionBar" boşsa bir istisna atar.
supportActionBar!!.setTitle(R.string.my_text)
supportActionBar!!.title = "My text"
AndroidX ve navigasyon mimari bileşenini kullanan gelecekteki geliştiriciler için .
Bunun yerine olabilir yukarıdaki çözümlerden birini kullanarak araç çubuğu başlığını ayarlama çok acı bir arka yığın değişikliği dinamik olarak ayarlamak isterseniz, bir ayarlayabilirsiniz yer tutucu için başlık içinde parçanın gezinti grafiğinin aşağıdaki gibi:
<fragment
android:id="@+id/some_fragment"
android:name="package.SomeFragment"
android:label="Hello {placeholder}"
tools:layout="@layout/fragment_some">
<argument
android:name="placeholder"
app:argType="string" />
</fragment>
Yer tutucu değeri, FragmentDirections
(eylem yöntemi aracılığıyla) kullanılarak sağlanmalıdır.
Daha sonra başlıkta değiştirilir ve Hello World
(ne zaman placeholder = "World"
) gibi gösterilir .
getSupportActionBar().setTitle("title");