Setting style="?android:attr/buttonBarStyle" to parent layout and style="?android:attr/buttonBarButtonStyle" to buttons make them invisible

16,101

I just needed to use

LayoutInflater layoutInflater = LayoutInflater.from(this);

instead of

LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Share:
16,101
Vitaly Zinchenko
Author by

Vitaly Zinchenko

Android developer

Updated on July 20, 2022

Comments

  • Vitaly Zinchenko
    Vitaly Zinchenko almost 2 years

    I followed Android recommendation and set style="?android:attr/buttonBarStyle" to parent layout and style="?android:attr/buttonBarButtonStyle" to buttons.

    So now my layout is something like this:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        style="?android:attr/buttonBarStyle">
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 1"
            style="?android:attr/buttonBarButtonStyle"/>
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 2"
            style="?android:attr/buttonBarButtonStyle"/>
    
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 3"
            style="?android:attr/buttonBarButtonStyle"/>
    
    </LinearLayout>
    

    But after setting the style, these buttons have become invisible, although I can still click on them.

    Please tell me what is wrong.

    Edit: Additional details

    Well, I've just created a new project specifically to test this layout and surprisingly it indeed does work.

    So to be more precise, actually, I dynamically add this layout to another one, something like this:

    <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">
    
        <LinearLayout
            android:id="@+id/buttons_panel_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
        </LinearLayout>
    
        <!-- some other stuff -->
    
    </LinearLayout>
    

    Code:

    LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
    LinearLayout buttonsPanelContainer = (LinearLayout) findViewById(R.id.buttons_panel_container);
    
    View buttonPanelView = null;
    if(chosenValueType.equals("some_type")) {
    
        buttonPanelView = layoutInflater.inflate(R.layout.some_buttons_panel, null);
    
        Button Button1 = (Button) buttonPanelView.findViewById(R.id.button1);
        Button1.setOnClickListener(this);
        Button Button2 = (Button) buttonPanelView.findViewById(R.id.button2);
        Button2.setOnClickListener(this);
    
    } else if (chosenRawValueType.equals("another_type") { 
        //...
    
    ViewGroup insertPoint = (ViewGroup) buttonsPanelContainer;
    insertPoint.addView(buttonPanelView, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    

    Sorry to not mention it earlier, I didn't think it could be the case.

    So what's wrong?