工具栏内的布局向右移动

时间:2016-11-26 15:34:35

标签: android android-layout material-design android-toolbar

LinearLayout放置在Toolbar内的Toolbar向右移动,如您所见......

因此,TabHostToolbar(在父Fragment中再次使用<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.android.example"> <android.support.v7.widget.RecyclerView android:id="@+id/recview_navigator" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="2dp" android:layout_weight="1"/> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/accent"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar_navigator" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/imageView_navigator_up" android:layout_width="30dp" android:layout_height="30dp" android:layout_weight="1" android:src="@drawable/ic_navigate_before_white_48dp" android:tint="@color/recview"/> <ImageView android:id="@+id/imageView_navigator_save" android:layout_width="30dp" android:layout_height="30dp" android:layout_weight="1" android:src="@drawable/ic_save_white_48dp" android:tint="@color/recview"/> </LinearLayout> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> </LinearLayout> 实现)不能很好地叠加。

  • 我该如何解决?

布局草图(Android Studio)

enter image description here

实际应用

enter image description here

布局代码

#include <stdio.h>
#include<time.h>
#define N 16
int isAvailable(int sudoku[16][16], int row, int col, int num)                          
{
int i, j;
for(i=0; i<16; i++){

     if( (sudoku[row][i] == num) || ( sudoku[i][col] == num )  )
        return 0;
}

int rowStart = (row/4) * 4;
int colStart = (col/4) * 4;

for(i=rowStart; i<(rowStart+4); ++i)
{
    for(j=colStart; j<(colStart+4); ++j)
    {
        if( sudoku[i][j] == num )
            return 0;
    }
}    

return 1;
}    

int fillsudoku(int sudoku[16][16], int row, int col)                          
{
int i;
if( row<16 && col<16 )
{
    if( sudoku[row][col] != 0 ) 
    {
        if( (col+1)<16 )
            return fillsudoku(sudoku, row, col+1);
        else if( (row+1)<16 )
            return fillsudoku(sudoku, row+1, 0);
        else
            return 1;
    }
    else
    {
        for(i=0; i<16; ++i)
        {
            if( isAvailable(sudoku, row, col, i+1) )
            {
                sudoku[row][col] = i+1;

                if( (col+1)<16 )
                {
                   if( fillsudoku(sudoku, row, col+1) )
                       return 1;
                    else
                       sudoku[row][col] = 0;
                }
                else if( (row+1)<16 )
                {
                    if( fillsudoku(sudoku, row+1, 0) )    
                        return 1;
                    else
                        sudoku[row][col] = 0;
                }
                else
                    return 1;
            }
        }
    }
    return 0;
}
else
{
    return 1;
}
} 

int main()
{
clock_t tic=clock(); 
int a,i,j;
int sudoku[N][N];
FILE *f;
f=fopen("s16.txt","r");


    for(i=0;i<N;i++){

        for(j=0;j<N;j++)
        {
            fscanf(f,"%d",&sudoku[i][j]);

        }
    }
if( fillsudoku(sudoku, 0, 0) )                                         
{

    for(i=0; i<16; ++i)
    {
        for(j=0; j<16; ++j){

            printf("%d ", sudoku[i][j]);
            if(sudoku[i][j]<10){

                printf(" ");
            }
            if(j%4==3){
                printf("|");
            }
        }
        printf("\n");
        if(i%4==3){         
        printf("----------------------------------------------------");
        }
        printf("\n");
    }
}
else
{
    printf("\n\nNO SOLUTION\n\n");
}
clock_t toc=clock();
printf("\nTotal time elasped is %f", (double)(toc - tic) / CLOCKS_PER_SEC);
return 0;
fclose(f);
}

2 个答案:

答案 0 :(得分:11)

您是否尝试删除内容插入内容?

<android.support.v7.widget.Toolbar`    
    app:contentInsetStart="0dp"
    app:contentInsetLeft="0dp"
...>

答案 1 :(得分:2)

  

问题

额外的保证金空间是因为toolbar标签。它默认大约有16dp个空格。这是必需的,因此可以显示汉堡包,app_icon或up-caret等图标。

  

你怎么解决它?

嗯,黑客是在android:layout_marginLeft="-16dp"标记中包含toolbar属性,但是如果在调用子活动时显示up-caret(后退按钮),则可能会弄乱布局导航抽屉的汉堡包图标。

我早些时候写过here

如果您不打算使用toolbar的功能,那么最好使用以下布局替换整个appBarLayout

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorAccent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/imageView_navigator_up"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:adjustViewBounds="false"
        android:src="@drawable/ic_navigate_before_white_48dp"/>

    <ImageView
        android:id="@+id/imageView_navigator_save"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_save_black_48dp"/>
</LinearLayout>