18

私のAndroidxmlレイアウトでは、borderframe.xmlを背景として使用して境界線を適用しています。

borderframe.xmlファイルは次のようになります。

    <?xml version="1.0" encoding="UTF-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke 
        android:width="1dip" 
        android:color="#ffffff"/>
    <solid 
        android:color="#95865F"/>
    <corners 
        android:radius="10px"/>

    <padding 
        android:left="1dp"
        android:right="1dp"
        android:top="1dp"
        android:bottom="1dp"/> 
</shape>

さて、android:radius = "10px"がある間は機能しますが、特定のコーナーにのみ丸い形を与えると機能しません。log catにエラーメッセージはありませんが、Eclipseで次のようなエラーが見つかりました:

    The graphics preview in the layout editor may not be accurate:
* Different corner sizes are not supported in Path.addRoundRect.

そのxmlファイルにパディングがない場合でも、境界線は表示されません。

さて、私はそれのために何をしなければなりませんか?topLeftcornerとbottomLeftCornerのみに丸みを帯びた境界線を作成したい場合の解決策は何ですか。?ありがとう。

4

4 に答える 4

17

私も同じ問題に直面しています。しかし、そのために私はレイヤーリストを使用します。私はあなたを助けるかもしれない私の答えをここに投稿します。
出力画面を確認してください画像1

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#c1c1c1" />
            <solid android:color="#c1c1c1" />
            <corners android:radius="20dp"/>
        </shape>
   </item>

   <item android:right="20dp"
        >
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#c1c1c1" />
            <solid android:color="#c1c1c1" />
        </shape>
   </item>

</layer-list>
于 2014-04-01T06:57:00.480 に答える
10

左上隅を丸くしたいだけだと仮定して、それを行う必要があります。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
  <corners
      android:radius="20sp"
      android:topRightRadius="0dp"
      android:bottomRightRadius="0dp"
      android:bottomLeftRadius="0dp" />
  <gradient
      android:startColor="@color/logo_blue"
      android:endColor="@color/blue"
      android:angle="0"/>
</shape>

説明:すべてのコーナーには、(最初​​は)1より大きいコーナー半径を指定する必要があります。そうしないと、コーナーが丸められません。特定のコーナーを丸めないようにandroid:radiusする場合の回避策は、デフォルトのコーナー半径を1より大きい値に設定し、すべてのコーナーを実際に必要な値でオーバーライドして、ゼロ( "0dp")を指定することです。角を丸くしたくない。[ソース]

結果として、ドローアブルを次のように定義する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke 
        android:width="1dip" 
        android:color="#ffffff"/>
    <solid 
        android:color="#95865F"/>
    <corners 
       android:radius="10px"
      android:topRightRadius="0dp"
      android:bottomRightRadius="0dp" />

    <padding 
        android:left="1dp"
        android:right="1dp"
        android:top="1dp"
        android:bottom="1dp"/> 
</shape>

アップデート

Shape Drawable Resource Androidドキュメントから:

android:radiusディメンション。寸法値または寸法リソースとしての、すべてのコーナーの半径。これは、各コーナーで次の属性によって上書きされます。

オーバーライドは問題のキーワードです…</p>

于 2011-12-06T12:00:42.610 に答える
6

SDKツール19、プラットフォームツール11を使用しており、Android4.0.3でアプリを実行しています。次のXMLを使用するとうまくいきます。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <solid android:color="#dd000000"/>
    <padding 
        android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners
        android:bottomLeftRadius="25dp"
        android:bottomRightRadius="25dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp" />
</shape>

Eclipseの警告は、プレビューを表示できないことに関するものです。hetアプリでは正しく表示されます。

于 2012-06-14T15:38:07.443 に答える
-1

フォーラムの1つで解決策を入手しました。各コーナーにコメントを付け、ドローアブルのxmlに追加することで解決しました。以下のコメントコードは、理解のためにのみ保持しています。

XMLコード-

   <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
        <solid android:color="#fd2149" />
        <stroke android:width="1dip" android:color="#ffd102"/>
      <!--  <corners
            android:bottomLeftRadius="8dp"
            android:bottomRightRadius="8dp"
            android:topLeftRadius="8dp"
            android:topRightRadius="8dp" />
        -->
        <corners android:radius="8dp" />
    </shape>

---編集済み-上記のコードはドローアブルフォルダ内の私のback.xmlであり、必要に応じて同じback.xmlにパディングを追加できます。新規開発者の場合、back.xmlはレイアウトファイルから次のように参照されます。

  <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textSize="20sp"
    android:scrollbars="vertical"
    android:background="@drawable/back">

お役に立てれば。

于 2016-05-28T12:17:41.740 に答える