Android 带有等距按钮的自定义操作栏 LinearLayout
Android Custom Action Bar LinearLayout with equally spaced buttons
固定
我通过简单地删除操作栏并使用支持库的工具栏来解决这个问题。我已将工具栏添加到我的 activity 的 XML 文件中。此外,我已经删除了我的根视图 (RelativeLayout) 的默认填充,这些填充是由 Android Studio 在创建 activity 时创建的,最初我没有通知过。此外,我使用 "match_parent" 而不是“0dp”作为图像按钮宽度。
<RelativeLayout 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"
tools:context=".BluetoothConnectionManager">
<android.support.v7.widget.Toolbar android:id="@+id/tbMenu"
xmlns:application="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="@color/hafnertec"
android:layout_alignParentTop="true">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_marginRight="12dp"
android:orientation="horizontal">
<ImageButton android:id="@+id/miBluetoothConnection"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="showDialogueCloseBluetoothConnection"/>
<ImageButton android:id="@+id/miHome"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="switchToHomeFragment"/>
<ImageButton android:id="@+id/miGraphsBurnOffCurves"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="switchToBurnOffGraphsFragment"/>
<ImageButton android:id="@+id/miConfigurationMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
<ImageButton android:id="@+id/miExpertMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
...
</RelativeLayout>
原始问题
我正在编写一个使用自定义操作栏的 Android 应用程序。我希望此操作栏显示五个等距的按钮。为了完成此任务,我使用以下 XML 文件(因为图标仍在使用中,所以所有按钮共享相同的图标。):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="fill_horizontal"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:orientation="horizontal">
<ImageButton android:id="@+id/miBluetoothConnection"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="showDialogueCloseBluetoothConnection"/>
<ImageButton android:id="@+id/miHome"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="switchToHomeFragment"/>
<ImageButton android:id="@+id/miGraphsBurnOffCurves"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
<ImageButton android:id="@+id/miConfigurationMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
<ImageButton android:id="@+id/miExpertMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
</LinearLayout>
在设计器中运行良好,但在真实设备上测试时却不起作用。在测试时,所有按钮都被挤压在一起,并且它们之间绝对没有间距。下面可以看到设计器中的预览和用我的测试设备制作的屏幕截图。
Action bar displayed by the designer
Action bar on my testing device
我还尝试将我的 LinearLayout 包装到 RelativeLayout 以及使用 TableLayout。但是,这些都不起作用。使用 RelativeLayout,第五个按钮没有其他按钮那么大。
为了将操作栏添加到我的应用程序,我使用以下代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
...
// add the custom action bar
this.abMainMenu = this.getSupportActionBar();
this.abMainMenu.setDisplayShowCustomEnabled(true);
LayoutInflater liAddActionBar = LayoutInflater.from(this);
this.customActionBar = liAddActionBar.inflate(ApplicationSettings.LAYOUT_REFERENCE_MAIN_MENU, null);
this.abMainMenu.setCustomView(this.customActionBar);
...
}
我正在使用 CyanogenMod 12 月 11 日屏幕截图 (Android 4.4.4) 在三星 Galaxy S I9000 上进行测试。
感谢任何帮助!
谢谢,
卢卡斯
您尝试过使用工具栏吗?
固定
我通过简单地删除操作栏并使用支持库的工具栏来解决这个问题。我已将工具栏添加到我的 activity 的 XML 文件中。此外,我已经删除了我的根视图 (RelativeLayout) 的默认填充,这些填充是由 Android Studio 在创建 activity 时创建的,最初我没有通知过。此外,我使用 "match_parent" 而不是“0dp”作为图像按钮宽度。
<RelativeLayout 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"
tools:context=".BluetoothConnectionManager">
<android.support.v7.widget.Toolbar android:id="@+id/tbMenu"
xmlns:application="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="@color/hafnertec"
android:layout_alignParentTop="true">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_marginRight="12dp"
android:orientation="horizontal">
<ImageButton android:id="@+id/miBluetoothConnection"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="showDialogueCloseBluetoothConnection"/>
<ImageButton android:id="@+id/miHome"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="switchToHomeFragment"/>
<ImageButton android:id="@+id/miGraphsBurnOffCurves"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="switchToBurnOffGraphsFragment"/>
<ImageButton android:id="@+id/miConfigurationMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
<ImageButton android:id="@+id/miExpertMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
...
</RelativeLayout>
原始问题
我正在编写一个使用自定义操作栏的 Android 应用程序。我希望此操作栏显示五个等距的按钮。为了完成此任务,我使用以下 XML 文件(因为图标仍在使用中,所以所有按钮共享相同的图标。):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="fill_horizontal"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:orientation="horizontal">
<ImageButton android:id="@+id/miBluetoothConnection"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="showDialogueCloseBluetoothConnection"/>
<ImageButton android:id="@+id/miHome"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"
android:onClick="switchToHomeFragment"/>
<ImageButton android:id="@+id/miGraphsBurnOffCurves"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
<ImageButton android:id="@+id/miConfigurationMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
<ImageButton android:id="@+id/miExpertMode"
android:src="@drawable/ic_action_bluetooth_searching"
android:background="@drawable/selector_menu_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:scaleType="centerInside"/>
</LinearLayout>
在设计器中运行良好,但在真实设备上测试时却不起作用。在测试时,所有按钮都被挤压在一起,并且它们之间绝对没有间距。下面可以看到设计器中的预览和用我的测试设备制作的屏幕截图。
Action bar displayed by the designer
Action bar on my testing device
我还尝试将我的 LinearLayout 包装到 RelativeLayout 以及使用 TableLayout。但是,这些都不起作用。使用 RelativeLayout,第五个按钮没有其他按钮那么大。
为了将操作栏添加到我的应用程序,我使用以下代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
...
// add the custom action bar
this.abMainMenu = this.getSupportActionBar();
this.abMainMenu.setDisplayShowCustomEnabled(true);
LayoutInflater liAddActionBar = LayoutInflater.from(this);
this.customActionBar = liAddActionBar.inflate(ApplicationSettings.LAYOUT_REFERENCE_MAIN_MENU, null);
this.abMainMenu.setCustomView(this.customActionBar);
...
}
我正在使用 CyanogenMod 12 月 11 日屏幕截图 (Android 4.4.4) 在三星 Galaxy S I9000 上进行测试。
感谢任何帮助!
谢谢,
卢卡斯
您尝试过使用工具栏吗?