我有两项活动AddActivty
和ViewActivity
。这两个活动共享文件layout_form.xml
中定义的布局视图。
首先,我的应用需要使用最低sdk版本16 。所以在我指定的build.gradle
文件中。
这是layout_form.xml
的剪辑。剩下的代码并不重要。
<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>
在这两个活动中,我将此布局设置为该行的内容视图 的setContentView(R.layout.layout_form);
这就是我的应用工具栏在屏幕上显示AddActivity
时的样子。
到目前为止,非常好。
当我开始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);
现在,如果我在android&gt; = 21上运行我的应用程序一切正常。这就是工具栏应该如何。
相反,在Android 16上它以这种方式看起来。
正如您所看到的,如果我的应用程序在Android 16上运行(我不知道Android 17或更高版本会发生什么,但低于21) 图标不会更改。它们看起来仍然与xml布局文件中设置的相同。
另一件事。我将此监听器添加到editButton
editButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backButton.setCompoundDrawablesWithIntrinsicBounds(
R.drawable.ic_back, 0, 0, 0);
}
});
如果我点击它,现在图标会改变。
那么,为什么onCreate()
的{{1}}方法不会改变图标?
答案 0 :(得分:0)
解决! 问题是
android:drawableStart="@drawable/ic_done"
<{1>}中的和
leftToolbarButton
android:drawableEnd="@drawable/ic_cancel"
中的。
我从layout_form.xml移出了这两行。 我添加了它们,因为Android Studio建议我添加它们以便更好地支持从左到右的布局。