【问题标题】:Android custom titlebar - center textAndroid 自定义标题栏 - 居中文本
【发布时间】:2012-07-27 07:27:38
【问题描述】:

我已经创建了带有我自己的布局的自定义标题栏。我想在与水平中心对齐的标题栏中显示文本(=与默认标题栏相同)。但这对我不起作用,我的文本仍然对齐到 fitlebar 的顶部,而不是中心。你能给我一些建议吗?

我正在使用此代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/top_back">
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/title"
        android:layout_gravity="center_vertical"
        android:paddingLeft="15dip"
    />
</LinearLayout>

【问题讨论】:

  • 您是否尝试为 textview 设置 layout_gravity="center"?另一种方法是设置它的 layout_width="fill_parent" 和gravity="center"
  • 然后试试 android:gravity="center_vertical"

标签: android customization titlebar


【解决方案1】:

关于重力和layout_gravity的简单理解:

android:gravity => 设置其使用的 View 内容的重力。

android:layout_gravity => 设置视图或布局在其父级中的重力。

更多:Gravity and layout_gravity on Android

现在,您需要将android:gravity="center_horizontal" 包含在您的&lt;TextView&gt; 中。

【讨论】:

    【解决方案2】:

    将 android:layout_height="match_parent" 更改为 "wrap_content" 。它会工作

     <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/title"
        android:text="center"
        android:layout_gravity="center"></TextView>
    

    【讨论】:

      【解决方案3】:

      这将起作用:

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="horizontal"
      android:background="@drawable/top_back">
      <TextView 
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:id="@+id/title"
          android:gravity="center_vertical"
          android:paddingLeft="15dip"
      />
      

      通过更改,android:layout_widthandroid:gravity

      【讨论】:

        【解决方案4】:

        您可以使用 RelativeLayout 而不是 LinearLayout。 RelativeLayout 可以更好地处理视图的属性。

        使用此代码:

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:background="@drawable/top_back">
            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/title"
                android:layout_alignParentTop = "true"
                android:layout_centerHorizontal = "true"
            />
        </RelativeLayout>
        

        在代码中,我为此更改了 XML 的最后几行:

           android:layout_alignParentTop = "true"
           android:layout_centerHorizontal = "true"
        

        第一行将TextView设置在视图的顶部,第二行将水平居中设置在顶部。

        【讨论】:

          【解决方案5】:

          更改android:layout_gravity="center_horizo​​ntal"

          请看一下代码,需要以完全相同的方式使其居中。

           public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
          
              requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
          
              setContentView(R.layout.playing_video);  // Actual Layout Name
          
              getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                      R.layout.custom_layout); // Layoutname of Title Text
          
              TextView titleText= (TextView) findViewById(R.id.title);
          
          
              titleText.setText("Your Text");
          

          }

          它对我有用,如果它对你有用,请告诉我。

          【讨论】:

            猜你喜欢
            • 2011-03-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多