2017-10-24 8 views
0

私はAddActivtyViewActivityという2つのアクティビティを持っています。これらの2つのアクティビティは、ファイルlayout_form.xmlで定義されたレイアウトビューを共有します。APIが下位の21のボタンで描画可能なアイコン

まず、私のアプリはの最小sdkバージョン16を動作させる必要があります。だからbuild.gradleファイルで私はそれを指定しました。

これらは、layout_form.xmlの一部です。残りのコードは重要ではありません。 Iライン setContentView(R.layout.layout_form)によってコンテンツビューとしてこのレイアウトを設定し、両方の活動において

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="orizontal"> 

     <Button 
      android:id="@+id/leftToolbarButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:drawableLeft="@drawable/ic_done" 
      android:drawableStart="@drawable/ic_done" 
      android:text="ADD" 
      android:textColor="@android:color/white" /> 
     <Button 
      android:id="@+id/rightToolbarButton" 
      style="@style/Widget.AppCompat.Button.Borderless" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:drawableEnd="@drawable/ic_cancel" 
      android:drawableRight="@drawable/ic_cancel" 
      android:text="CANCEL" 
      android:textColor="@android:color/white" /> 
    </LinearLayout> 
</Toolbar> 

これは、AddActivityが画面に表示されているときの私のアプリツールバーの外観です。

enter image description here

とこれまでのところ、とても良いです。

開始時に問題が発生するViewActivity。 これはそのonCreate()メソッドのコードです。

Button backButton=(Button)findViewById(R.id.leftToolbarButton); 
backButton.setText("BACK"); 
//PROBLEM HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
backButton.setCompoundDrawablesWithIntrinsicBounds(
    R.drawable.ic_back, 0, 0, 0); 

Button editButton=(Button)findViewById(R.id.rightToolbarButton); 
editButton.setText("EDIT"); 
//AND PROBLEM HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
editButton.setCompoundDrawablesWithIntrinsicBounds(
0, 0, R.drawable.ic_edit, 0); 

ここでアンドロイド> = 21でアプリを実行すると、すべてOKです。これがツールバーの仕組みです。

enter image description here

は代わりに、アンドロイド16には、このように見えます。

enter image description here

あなたが見ることができるように、私のアプリは、(私はAndroidの17以上に何が起こるか分かりませんが、より低い21) アイコンが変更されていないAndroidの16上で実行されている場合。それらはxmlレイアウトファイルで設定されたものと同じように見えます。

別のこと。私は、それを今のアイコンの変更をクリックした場合、私はeditButton

editButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     backButton.setCompoundDrawablesWithIntrinsicBounds(
     R.drawable.ic_back, 0, 0, 0); 
    } 
}); 

にこのリスナーを追加します。

enter image description here

、なぜViewActivityonCreate()方法でアイコンが変化しないのですか?

答えて

0

解決済み! 問題はleftToolbarButton

android:drawableStart="@drawable/ic_done" 

、およびrightToolbarButton

android:drawableEnd="@drawable/ic_cancel" 

です。

layout_form.xmlからこれらの2行を移動しました。 左から右へのレイアウトをよりよくサポートするために、Android Studioから追加するように提案されたため、追加しました。

関連する問題