2013-11-25 2 views
0

Я хочу сделать индивидуальные разделители между кнопками в моей панели , я положил эту панель кнопок в HorizontalScrollView, я использовал два разных способа сделать это, и оба не работали, первый размещает View между каждыми двумя кнопками, как что:Как сделать разделители между кнопками в ButtonBar?

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:gravity="top" 
     style="@android:style/ButtonBar" 
     android:background="@drawable/released" > 

     <Button 
      android:id="@+id/Main" 
      android:layout_width="120dp" 
      android:layout_height="50dp" 
      android:background="@android:color/transparent" 
      android:textColor="@android:color/white" 
      android:textStyle="bold" 
      android:text="@string/main"/> 

     <View android:layout_height="fill_parent" 
      android:layout_width="2px" 
      android:background="@drawable/separators"/> 

     <Button 
      android:id="@+id/HomeView" 
      android:layout_width="120dp" 
      android:layout_height="50dp" 
      android:background="@android:color/transparent" 
      android:textColor="@android:color/white" 
      android:textStyle="bold" 
      android:layout_toRightOf="@+id/Main" 
      android:text="@string/homeview" /> 
     /! declaring the rest butttons and views!/ 
</RelativeLayout> 

но когда делает, что я получил только один разделитель, помещенный в начале в панели кнопок, прежде чем все кнопки.


Второй должны сделать divider файл и с помощью опции разделительной в моем main.xml так:

<LinearLayout 
     android:id="@+id/buttonbar" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:gravity="top" 
     android:divider="@drawable/divider" 
     android:dividerPadding="12dip" 
     android:showDividers="middle" 
     style="@android:style/ButtonBar" 
     android:background="@drawable/released" > 

     /! declaring buttons !/ 
</LinearLayout> 

и divider.xml:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <size android:width="2dip" /> 
    <solid android:color="@drawable/separators" /> 

</shape> 

где separators - это градиентный цвет,

, но этот способ дает мне эту ошибку:

java.lang.NullPointerException 
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.getDefaultProperties(RenderSessionImpl.java:1476) 
    at com.android.layoutlib.bridge.BridgeRenderSession.getDefaultProperties(BridgeRenderSession.java:68) 
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.ViewHierarchy.getDefaultProperties(ViewHierarchy.java:710) 
    at com.android.ide.eclipse.adt.internal.editors.layout.properties.XmlProperty.getStringValue(XmlProperty.java:209) 
    at com.android.ide.eclipse.adt.internal.editors.layout.properties.XmlProperty.getValue(XmlProperty.java:221) 
    at com.android.ide.eclipse.adt.internal.editors.layout.properties.BooleanXmlPropertyEditor.paint(BooleanXmlPropertyEditor.java:52) 
    at org.eclipse.wb.internal.core.model.property.table.PropertyTable.drawProperty(PropertyTable.java:1309) 
    at org.eclipse.wb.internal.core.model.property.table.PropertyTable.drawContent(PropertyTable.java:1151) 
    at org.eclipse.wb.internal.core.model.property.table.PropertyTable.handlePaint(PropertyTable.java:1094) 
    at org.eclipse.wb.internal.core.model.property.table.PropertyTable.access$200(PropertyTable.java:64) 
    at org.eclipse.wb.internal.core.model.property.table.PropertyTable$3.handleEvent(PropertyTable.java:187) 
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) 
    at org.eclipse.swt.widgets.Composite.WM_PRINTCLIENT(Composite.java:1667) 
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4673) 
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) 
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977) 
    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) 
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2443) 
    at org.eclipse.swt.widgets.Button.callWindowProc(Button.java:343) 
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4706) 
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4990) 
    at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) 
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2549) 
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997) 
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138) 
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567) 
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) 
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124) 
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450) 

ответ

0

Что касается Вашего размещения Seperator между кнопками, так как вы используете RelativeLayout вам нужно упомянуть, где именно вы хотите Seperator быть размещены. Замена Seperator View в первом макете с ниже даст вам желаемый результат: -

<View android:id="@+id/separator" 
android:layout_height="fill_parent" 
android:layout_toRightOf="@+id/Main" 
android:layout_width="2px" 
android:background="@drawable/separators"/> 

, а также внести следующие изменения в кнопке HomeView

<Button 
android:id="@+id/HomeView" 
android:layout_width="120dp" 
android:layout_height="50dp" 
android:background="@android:color/transparent" 
android:textColor="@android:color/white" 
android:textStyle="bold" 
android:layout_toRightOf="@+id/Separator" 
android:text="@string/homeview" /> 
Смежные вопросы