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>

Insira a descrição da imagem aqui

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>

Insira a descrição da imagem aqui
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 :
Insira a descrição da imagem aqui


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);
    }


}

Insira a descrição da imagem aqui
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
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
(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
Insira a descrição da imagem aqui
tudo nunca é
Insira a descrição da imagem aqui
tudo ifRoom
Insira a descrição da imagem aqui

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;
    }

Acho que você gosta

Origin blog.csdn.net/qq_45353823/article/details/107773312
Recomendado
Clasificación