如何获取对话框片段或窗口的背景颜色?

时间:2017-08-06 21:51:50

标签: android textview android-theme android-dialogfragment android-background

enter image description here

红色文字有点小。以下是它的说法:

需要获取对话框的背景颜色,以便我可以设置"更多信息"的背景​​。 textview到相同的颜色。需要以编程方式执行此操作,因为对话框的颜色因API级别而异。

Java代码:

public class CityDetailDialog extends DialogFragment {

    private SharedPreferences sharedPreferences;
    private City mCity;
    private LinearLayout mCityContainerLayout;
    private ImageView mImageFlag;
    private TextView mTextCity;
    private ImageView mImageCity;
    private ImageButton mButtonGoogleMaps;
    private ImageButton mButtonWikipedia;
    private TextView mMoreInfoTextView;

    public CityDetailDialog() {
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        sharedPreferences = getActivity().getSharedPreferences("settings", Context.MODE_PRIVATE);
        return inflater.inflate(R.layout.dialog_city_detail, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mCity = (City) getArguments().getSerializable("city");
        mCityContainerLayout = (LinearLayout) view.findViewById(R.id.container_city_dialog);
        mImageFlag = (ImageView) view.findViewById(R.id.flag_image);
        mTextCity = (TextView) view.findViewById(R.id.city_name);
        mImageCity = (ImageView) view.findViewById(R.id.city_image);
        mButtonGoogleMaps = (ImageButton) view.findViewById(R.id.button_google_maps);
        mButtonWikipedia = (ImageButton) view.findViewById(R.id.button_wikipedia);
        mMoreInfoTextView = (TextView) view.findViewById(R.id.more_info_label);

        mImageFlag.setImageResource(ResourceByNameRetriever.getDrawableResourceByName(mCity.
                getCountryName(), getActivity()));
        mTextCity.setText(ResourceByNameRetriever.getStringResourceByName(mCity.getCityName(),
                getActivity()));
        Picasso.with(getActivity()).load(mCity.getImageUrl()).into(mImageCity);

        mButtonGoogleMaps.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent mapsIntent = new Intent(Intent.ACTION_VIEW);
                mapsIntent.setData(Uri.parse("geo:" + mCity.getCoordinates()));
                Intent chooser = Intent.createChooser(mapsIntent, getString(R.string.launch_maps));
                startActivity(chooser);
            }
        });

        mButtonWikipedia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent wikiIntent = new Intent(Intent.ACTION_VIEW);
                wikiIntent.setData(Uri.parse(mCity.getWikiUrl()));
                Intent chooser = Intent.createChooser(wikiIntent, getString(R.string.launch_browser));
                startActivity(chooser);
            }
        });
    }

}

1 个答案:

答案 0 :(得分:1)

根据github上xml文件中的代码,需要进行更改以达到预期的效果:

<LinearLayout
        android:id="@+id/container_buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false"
        android:orientation="horizontal"
        android:layout_below="@+id/relativeLayout">

 .
 .
 .
 </LinearLayout>
<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/relativeLayout">

        <View
            android:id="@+id/horizontal_divider1"
            android:layout_width="wrap_content"
            android:layout_height="2dp"
            android:layout_centerInParent="true"
            android:background="@color/gray"
            android:layout_toLeftOf="@+id/more_info_label"
            android:layout_toStartOf="@+id/more_info_label"/>


        <TextView
            android:id="@+id/more_info_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:padding="5dp"
            android:text="@string/more_info"
            android:textSize="18dp" />

        <View
            android:id="@+id/horizontal_divider2"
            android:layout_width="wrap_content"
            android:layout_height="2dp"
            android:layout_centerInParent="true"
            android:background="@color/gray"
            android:layout_toRightOf="@+id/more_info_label"
            android:layout_toEndOf="@+id/more_info_label"/>

    </RelativeLayout>