0

完璧に表示されているシンプルなカスタムタイトルを作成しました。ただし、setTitleメソッドが魔法のように機能するためにTextViewに指定するIDがわかりません。

私の最初の選択は@android:id / titleでしたが、それは機能しませんでした。

例xmlでカスタムタイトルレイアウトを定義し、それをアクティビティに追加しました。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_title"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/transparent" >

    <ImageView
        android:id="@+id/logo"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:scaleType="centerInside"
        android:onClick="home"
        android:src="@drawable/logo" />

    <TextView
        android:id="@android:id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:textSize="18dp"
        android:textStyle="bold"
        android:layout_centerVertical="true"
        android:text="TextView" />
</RelativeLayout>

TextViewが「タイトル」コンテナになりました。マニフェストのandroid:label値を、この新しいタイトルのTextViewに自動的に配置する必要があります。

つまり。デフォルトのメソッドsetTitleは、この値を定義済みのビューIDに追加する必要があります。必要なのはそのIDだけです。

4

2 に答える 2

2

setTitle はアクティビティのタイトルを設定します。TextView とは関係ありません。setText() を使用して TextView のテキストを設定する必要があります。

((TextView)findViewById(R.id.text_view_id)).setText("TextView テキスト");

編集:このソリューションを確認してください-> AndroidでカスタムタイトルバーのTextView値を動的に設定する方法は?

于 2012-05-22T11:58:18.950 に答える
1

カスタム タイトルで同様の機能を作成する必要がありました。ID を照合することでそれを実行できるとは思えません。Android で許可されている場合、これは大きなセキュリティ上の欠陥となります。私がしたことは、Activity を拡張してから、次のような方法で setTitle メソッドをオーバーライドすることでした...

TextView mCustomTitle;

@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.myLayout);
     mCustomTitle = (TextView)findViewById(R.id.title);
}

@Override
public void setTitle(CharSequence title) {
    //you can override the other setTitle as well if you need it
    mCustomTitle.setText(title);        
}
于 2012-05-24T08:03:21.837 に答える