Pontos de conhecimento relacionados ao material design (1)
AppTheme algumas tarefas
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- 无标题栏的窗口-->
<!-- <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"/>-->
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorAccent</item>
<!--手机顶部显示时间的那一行颜色-->
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<!-- 手机app内容的背景颜色-->
<item name="android:windowBackground">#009688</item>
<!--一些控件选中状态会使用-->
<item name="colorAccent">#ff00</item>
<!--目前的手机用不上-->
<!--<item name="android:navigationBarColor">#ff00</item>-->
<!--<item name="android:textColorPrimary">#FFEB3B</item>-->
</style>
</resources>
Uso de ToolBar
Se definirmos o tema como <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
podemos usar a Barra de Ferramentas para obter o mesmo efeito
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="30sp"
android:text="欢迎使用Toolbar"/>
</androidx.appcompat.widget.Toolbar>
</FrameLayout>
Se não quisermos escrever controles de texto sozinhos, também podemos operar no atributo label no manifesto
<activity android:name=".MainActivity"
android:label="欢迎使用MaterrialDesign">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Conforme mencionado acima, o atributo label é definido para a atividade atual. Se você permitir o programa agora, o título não será exibido para você. Neste momento, você precisa encontrar o controle da barra de ferramentas no código java e usar o método setSupportActionBar () ;.
Representações de exibição :
public class MainActivity extends AppCompatActivity {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
}
Observe que haverá duas barras de ferramentas no pacote. Eu uso o Androidx. O pacote específico depende do pacote que você usa. Se o conteúdo de um pacote setSupportActionBar exibir um erro, você pode mudar para outro pacote.
Barra de ferramentas + menu do menu misturados
Em algumas barras de título, também esperamos que haja alguns botões, e os eventos correspondentes apareçam após clicar,
então os botões na barra de título são na verdade barras de menu um por um
(1) Primeiro crie uma pasta de menu e crie um menu nesta pasta , Defina o conteúdo de cada barra de menu dentro de
(2) No menu, você pode criar vários itens na guia, e cada botão de menu
pode ser definido com um id, o que é conveniente para definir eventos de clique para ele posteriormente. O ícone se parece com um ícone, título: O título
showAsAction pode ter três atributos: sempre, nunca, ifRoom
Sempre deixe a barra de menu ser exibida na barra de título,
nunca seja usada para exibir no menu,
ifRoom significa que ela será exibida na barra de ferramentas se houver controles de tela suficientes, caso contrário, será exibida no menu.
Os efeitos específicos serão mostrados mais tarde
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/backup"
android:icon="@drawable/add"
android:title="添加"
app:showAsAction="always"/>
<item
android:id="@+id/delete"
android:icon="@drawable/delete"
android:title="删除"
app:showAsAction="always"/>
</menu>
Tudo é sempre
tudo nunca é
tudo ifRoom
Defina o layout do menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_item,menu);
return true;
}
Substitua onCreateOptionsMenu e retorne verdadeiro no final, caso contrário, não terá efeito
Definir evento de clique
Substitua onOptionsItemSelected e julgue qual menu foi clicado pelo switch e, finalmente, retorne verdadeiro
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.delete:
Toast.makeText( MainActivity.this,"你点击了回收站",Toast.LENGTH_SHORT).show();
break;
case R.id.backup:
Toast.makeText( MainActivity.this,"你点击了添加按钮",Toast.LENGTH_SHORT).show();
break;
}
return true;
}