相关疑难解决方法(0)

Android Lollipop,AppCompat ActionBar自定义视图不占用整个屏幕宽度

所以,我刚刚将我的代码库更新为Lollipop,而且我遇到了Action Bar的问题.我正在使用AppCompat和ActionBarActivity,并为自定义视图充气.似乎自定义视图不再占据屏幕的整个宽度,在左侧留下一条细条

建筑用19 过去的样子

建筑用21 它看起来现在的样子

这是我用来设置Action Bar的代码.有人有主意吗?

final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
    actionBar.setBackgroundDrawable(null);
    // actionBar.setStackedBackgroundDrawable(null);
    TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
    title.setText(R.string.youtube);
    ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
    back.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑

取出自定义视图并更改背景现在占用整个宽度.问题是,我们如何让CustomView占用ActionBar的整个宽度?

android android-appcompat android-actionbar android-5.0-lollipop

96
推荐指数
4
解决办法
5万
查看次数

如何删除Android工具栏的左边距?

我正在尝试使用工具栏来完成我的项目.这是我正在使用的代码:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentTop="true"
    android:background="?attr/colorPrimary"
    android:contentInsetLeft="0dp"
    android:elevation="@dimen/margin_padding_8dp"
    android:contentInsetStart="0dp">

    <RelativeLayout
        android:id="@+id/rlToolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/tvTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:paddingRight="@dimen/margin_padding_16dp"
            android:text="AppBar"
            android:textAppearance="@style/TextAppearance.AppCompat"
            android:textColor="@color/white"
            android:textSize="@dimen/text_size_20sp" />

    </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)


工具栏

我想删除左侧空白,在这里我设置的android:contentInsetLeft ="0dp"机器人:contentInsetStart ="0dp",但它不是 working..Please帮帮我吧!

android toolbar android-layout android-design-library

29
推荐指数
4
解决办法
2万
查看次数

Android ActionBar的自定义视图未填充父级

类似于这里的问题,但有一些关键的区别.最值得注意的是,在最新的支持库发布之前,已接受的答案确实有效.

这是自定义视图布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="#FFDD0000">

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

现在,当您尝试仅设置自定义视图时:

  ActionBar actionBar = getSupportActionBar();
  actionBar.setDisplayShowCustomEnabled(true);
  actionBar.setCustomView(R.layout.actionbar);
Run Code Online (Sandbox Code Playgroud)

您最终得到的自定义布局不会填满整个宽度: 在此输入图像描述

为了使这个更感兴趣,我在不同的应用程序中有类似的设置:

  ActionBar actionBar = getSupportActionBar();
  actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
  actionBar.setCustomView(R.layout.actionbar);
  actionBar.setDisplayHomeAsUpEnabled(false);
  actionBar.setHomeButtonEnabled(false);
Run Code Online (Sandbox Code Playgroud)

确实有效,直到我将支持库更新到v21.一旦我做了,我最终在以前没有遇到过这个问题的应用程序上遇到了同样的问题.

所以,我的问题是,有没有办法使用最新的支持库使自定义视图操作栏填充宽度?

编辑在做了一些更多的测试之后,我发现用targetSdkVersion/compileSdkVersion设置为19进行编译并且为库提供v7:19.0.1(或v7:19.1.0)没有这个问题(有主页图标,这是用后面的代码处理),确认这绝对是最新版本的问题.

android android-support-library android-actionbar-compat android-5.0-lollipop

19
推荐指数
3
解决办法
1万
查看次数

删除android工具栏图标中的边距

我在应用程序工具栏中的图标和导航图标(如图像中)之间得到了这个奇怪的边距.我不知道它来自何处以及如何将其删除.在搜索互联网后,我发现了这个:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:background="?attr/colorPrimaryDark"
    android:layout_margin="0dp"
    android:contentInsetLeft="0dp"
    android:contentInsetRight="0dp"
    android:contentInsetStart="0dp"
    android:contentInsetEnd="0dp"
    android:padding="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetEnd="0dp">
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到这个边缘,如图所示: 余量

编辑>>解决方案

好吧,在使用布局绑定后,我认为很多边缘都是图标(如图所示).但是我仍然可以删除此边距并更改图标和标题文本的大小. 在此输入图像描述

编辑

关注@Amir解决方案:java的助手:

class BasicActivity extends AppCompatActivity{
    protected Toolbar mToolbar;    /// Initilize it in onCreate methode
    .....

     protected void setupToolbar(String title) {
        toolbar=(Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ActionBar ab = getSupportActionBar();
        if (ab != null) {
            ab.setDisplayHomeAsUpEnabled(true);
            ab.setDisplayShowHomeEnabled(true);
        }

       if (!TextUtils.isEmpty(title)) {
        setTitle(title);
    }
}

}
Run Code Online (Sandbox Code Playgroud)

在你的活动课上:

class Main extends BasicActivity{
     @override
     protected void onCreate(Bundle saved){
          super.onCreate(saved);
          .... …
Run Code Online (Sandbox Code Playgroud)

android margins android-toolbar

18
推荐指数
2
解决办法
1万
查看次数

从android导航抽屉图标中删除左边距

任何人都可以帮我找到删除导航抽屉图标左边缘的方法(下面用红色矩形提到)?我在这里使用工具栏.

在此输入图像描述

android navigation-drawer android-toolbar

6
推荐指数
1
解决办法
2589
查看次数

如何在Android中的ActionBar中删除左填充边距的额外空间?

我一直在拉我的头发反对这个左边的填充/边距只是不要消失问题,即将成为秃头......对此的解决方案将不胜感激!我已经尝试过 SO 的这些答案,它确实移动了一些填充,但不是全部。基本上所有的答案都说将 contentInsetStart 和 contentInsetLeft 设置为 0dp。这确实删除了左侧的一些填充,但我仍然看到一个填充,它只是比我将 contentInsetStart 和 contentInsetLeft 设置为 0dp 之前小。此解决方案适用于三星手机,但不适用于我测试过的任何平板电脑,例如 Nexus 7、Nexus 9、Dell Venus 8 等。 在此处输入图片说明

我相信很多人都有这个问题,这些是我尝试过的答案,但仍然在上面显示的左侧留下填充/边距。

Android:从操作栏的自定义布局中删除左边距

Android Lollipop、AppCompat ActionBar 自定义视图不占用整个屏幕宽度

Android API 21 工具栏填充

我的活动/操作栏左侧的填充/边距 - 不知道它来自哪里,无法删除它

如何删除默认布局的填充/边距

如何在 ActionBar 上移除应用程序图标和屏幕边缘之间的边距?

样式

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/AppThemeActionBar</item>
        <item name="logo">@android:color/transparent</item>
    </style>

    <style name="AppThemeActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showCustom</item>
        <item name="background">@color/blue</item>
        <item name="actionBarSize">50dp</item>
        <item name="height">50dp</item>

        <item name="contentInsetLeft">0dp</item>
        <item name="contentInsetStart">0dp</item>
        <item name="contentInsetEnd">0dp</item>
        <item name="android:layout_marginLeft">0dp</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

活动布局,activity_main.xml,它几乎是空的,只是主要活动类的虚拟布局,自定义操作栏视图位于另一个布局文件中。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

</LinearLayout> …
Run Code Online (Sandbox Code Playgroud)

layout android margin padding android-actionbar

5
推荐指数
1
解决办法
3942
查看次数

减少android中工具栏导航图标的左边距

因为我是Android的新手我在我的工具栏中设置了后退按钮,我想从左边减少它的填充/边距我该怎么办?谢谢你.

这是我的设计代码

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView
android:id="@+id/tripidtoolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:text="name"
android:textColor="#ffffff"
android:textSize="18sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/dayNotoolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#ffffff"
android:layout_marginRight="10dp"
android:text="day"
android:textAllCaps="true"
android:textSize="18sp"
android:textStyle="bold"
/>
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

这是我手动设置后退按钮的方式

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_vouchers_details);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.arrowbackwhite);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

这是我的屏幕(后退按钮左边缘)

navigation icons android toolbar back

5
推荐指数
1
解决办法
8016
查看次数

SearchView上的余量太大

我的SearchView显示如下:

在此输入图像描述

正如您所看到search_edit_frame的,SearchView和SearchView本身之外都有一个边距.

在此输入图像描述

这是从哪里来的?检查布局显示左边24像素的边距, search_edit_frame但其他地方没有边距.

如何删除这个额外的空间?

menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/appbar_menu_search"
        android:icon="@drawable/ic_search"
        android:title="@string/search_search"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Run Code Online (Sandbox Code Playgroud)

布局:

<RelativeLayout

    android:id="@+id/root_layout"
    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">


    <android.support.design.widget.AppBarLayout
        android:id="@+id/profile_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/topbar_gradient"
        android:theme="@style/AppTheme.Dark"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/topbar_gradient"
            android:fitsSystemWindows="true"
            android:minHeight="?android:attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways">

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    (...)
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我设法通过应用@Jimmy的答案来缩小间距:

在此输入图像描述

然而,"后"图像按钮和SearchView之间仍然存在很大差距.

android

5
推荐指数
1
解决办法
846
查看次数

Android约束布局奇怪的行为

我的约束布局的版本是1.0.0-alpha8.在我的布局中包含工具栏后,工具栏的左侧和右侧都有空间,如下图所示

在此输入图像描述

这是我的工具栏的代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary">


</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

我已按照以下方式包含在我的布局中

<include
    layout="@layout/toolbar_top"
    android:id="@+id/topPanel"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"/>
Run Code Online (Sandbox Code Playgroud)

我没有在布局文件的根元素中使用任何额外的填充或边距.

另一个问题是,如果我编译或构建程序,我的代码会自动更改,例如

<include
    layout="@layout/toolbar_top"
    android:id="@+id/topPanel"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"/>
Run Code Online (Sandbox Code Playgroud)

改成

<include
    layout="@layout/toolbar_top"
    android:id="@+id/topPanel"
    android:layout_height="wrap_content"
    android:layout_width="368dp"/>
Run Code Online (Sandbox Code Playgroud)

并且指南还添加了一些我没有写的layout_editor_absoluteX附加值,比如自动添加.

<android.support.constraint.Guideline
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/guideline1"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.15"
    tools:layout_editor_absoluteX="58dp"/>
Run Code Online (Sandbox Code Playgroud)

android android-constraintlayout

4
推荐指数
1
解决办法
9398
查看次数

v7-21 ActionBarActivity未显示左侧的应用程序主图标

我实施了一项基本活动

public class MainActivity extends Activity
Run Code Online (Sandbox Code Playgroud)

当我使用如下菜单添加操作栏时,AndroidManifest.xml中定义的应用程序图标显示得很好

<application
android:allowBackup="true"
android:icon="@drawable/logo_green"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
Run Code Online (Sandbox Code Playgroud)

当我尝试更改为android.support.v7.app.ActionBarActivity(并切换到兼容的AppCompat主题,如@ style/Theme.AppCompat.Light.DarkActionBar)时,操作栏中的主应用程序菜单奇怪地消失了

我尝试将它恢复到Oncreate()方法中的位置,但它不起作用

actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setIcon(R.drawable.green_drawable);
Run Code Online (Sandbox Code Playgroud)

动作栏xml

<?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">
    <!-- Search / will display always -->


    <item android:id="@+id/notification"
        android:icon="@drawable/notification_active"
        android:title="Setup"
        app:showAsAction="never"/>

    <item android:id="@+id/action_search"
        android:icon="@drawable/add_friends"
        android:title="Add Friends"
        app:showAsAction="never"/>


    <item android:id="@+id/action_setup"
        android:icon="@drawable/trackingicon"
        android:title="Setup"
        app:showAsAction="never"/>

    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        app:showAsAction="never" />

    <item android:id="@+id/action_help"
        android:icon="@drawable/helpicon"
        android:title="Contact Support"
        app:showAsAction="ifRoom"/>


</menu>
Run Code Online (Sandbox Code Playgroud)

android-activity android-actionbar android-actionbar-compat android-actionbaractivity

2
推荐指数
1
解决办法
5689
查看次数

Android:动作栏主页按钮获得额外的填充

我正在开发一个应用程序,我在其中自定义操作栏,如图所示:

行动吧

我的代码如下:

// Remove all tabs from actionbar
getActionBar().removeAllTabs();

final ViewGroup actionBarLayout = (ViewGroup)getLayoutInflater().inflate(R.layout.custom_actionbar_layout, null);
// set custom layout for menus on actionbar
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_USE_LOGO);
getActionBar().setCustomView(actionBarLayout);

getActionBar().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setLogo(R.drawable.ic_back_orange);

final TextView textViewOfActionBarHeading = (TextView) actionBarLayout.findViewById(R.id.textView_actionar_heading);
textViewOfActionBarHeading.setText("My Activity");

// Getting the reference of searchViewand TextView of searchView
SearchView searchView = (SearchView) actionBarLayout.findViewById(R.id.searchView_actionar_search);
searchView.setIconifiedByDefault(true);
final TextView search_text = (TextView) searchView.findViewById(searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null));

// Set color to TextView of searchView
search_text.setTextColor(Color.BLACK);
// Set hint to TextView of …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-actionbar

-1
推荐指数
1
解决办法
1725
查看次数